PhysicsBody3D

Успадковує: CollisionObject3D < Node3D < Node < Object

Успадковано від: CharacterBody3D, PhysicalBone3D, RigidBody3D, StaticBody3D

Абстрактний базовий клас для 3D ігрових об'єктів, уражених фізикою.

Опис

PhysicsBody3D є абстрактним базовим класом для 3D ігрових об'єктів, уражених фізикою. Всі 3D фізико-фізичних органів успадкують від неї.

Попередження: З неоднорідною шкалою, цей вузол, ймовірно, не буде поводитися як очікується. Консервувати свою вагову вагу на всіх осях і відрегулювати форму зіткнення.

Посібники

Властивості

bool

axis_lock_angular_x

false

bool

axis_lock_angular_y

false

bool

axis_lock_angular_z

false

bool

axis_lock_linear_x

false

bool

axis_lock_linear_y

false

bool

axis_lock_linear_z

false

Методи

void

add_collision_exception_with(body: Node)

bool

get_axis_lock(axis: BodyAxis) const

Array[PhysicsBody3D]

get_collision_exceptions()

Vector3

get_gravity() const

KinematicCollision3D

move_and_collide(motion: Vector3, test_only: bool = false, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1)

void

remove_collision_exception_with(body: Node)

void

set_axis_lock(axis: BodyAxis, lock: bool)

bool

test_move(from: Transform3D, motion: Vector3, collision: KinematicCollision3D = null, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1)


Описи властивостей

bool axis_lock_angular_x = false 🔗

Заблокувати обертання тіла в осі X.


bool axis_lock_angular_y = false 🔗

Заблокувати обертання тіла в осі Y.


bool axis_lock_angular_z = false 🔗

Заблокувати обертання тіла в осі Z.


bool axis_lock_linear_x = false 🔗

Заблокувати лінійний рух тіла в осі X.


bool axis_lock_linear_y = false 🔗

Заблокувати лінійний рух тіла в осі Y.


bool axis_lock_linear_z = false 🔗

Заблокувати лінійний рух тіла в осі Z.


Описи методів

void add_collision_exception_with(body: Node) 🔗

Додати тіло до переліку тіл, які це тіло не може поєднуватися з.


bool get_axis_lock(axis: BodyAxis) const 🔗

Повертає true, якщо вказану лінійну або обертальну axis заблоковано.


Array[PhysicsBody3D] get_collision_exceptions() 🔗

Повертає масив вузлів, які були додані як виключення зіткнення для цього тіла.


Vector3 get_gravity() const 🔗

Повертає вектор тяжіння, що відповідає всім джерелам, які можуть впливати на тіло, в тому числі на перепади ваги з вузлів Area3D і глобальної світової ваги.


KinematicCollision3D move_and_collide(motion: Vector3, test_only: bool = false, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1) 🔗

Рухає тіло вздовж вектора motion. Для того, щоб бути частотою кадрів незалежною в Node._physics_process() або Node._process(), руху слід комп'ютерно використовувати delta.

Тіло буде зупинятися, якщо він Collides. Повернутися до KinematicCollision3D, яка містить інформацію про зіткнення при зупинці, або при дотику іншого тіла вздовж руху.

Якщо test_only є true, тіло не рухається, але інформація про зіткнення б-бе.

Safe_margin є додатковим запасом, що використовується для відновлення зіткнення (див. CharacterBody3D.safe_margin для отримання більш детальної інформації).

Якщо Recovery_as_collision є true, будь-яке депенетування з фази відновлення також повідомляється як зіткнення; це використовується наприклад CharacterBody3D для поліпшення виявлення підлоги під час натискання підлоги.

max_collisions дозволяє отримати більше одного результату зіткнення.


void remove_collision_exception_with(body: Node) 🔗

Видаліть тіло з переліку тіл, які це тіло не може зв'язатися з.


void set_axis_lock(axis: BodyAxis, lock: bool) 🔗

Блокує або розблоковує вказану лінійну або обертальну axis залежно від значення lock.


bool test_move(from: Transform3D, motion: Vector3, collision: KinematicCollision3D = null, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1) 🔗

Перевірка зіткнень без переміщення тіла. Для того, щоб бути частотою кадрів незалежною в Node._physics_process() або Node._process(), motion слід комп'ютерно використовувати delta.

Практично встановлює позицію вершини, масштаб і обертання до цього Transform3D, потім намагається перемістити тіло вздовж вектора motion. Повертає true, якщо зіткнення зупинить тіло з переміщення по всьому шляху.

collision - це додатковий об'єкт типу KinematicCollision3D, який містить додаткову інформацію про зіткнення при зупинці, або при дотику іншого тіла вздовж руху.

Safe_margin є додатковим запасом, що використовується для відновлення зіткнення (див. CharacterBody3D.safe_margin для отримання більш детальної інформації).

Якщо Recovery_as_collision є true, будь-яке депенетування з фази відновлення також повідомляється як зіткнення; це корисно для перевірки того, чи буде тіло touch будь-які інші тіла.

max_collisions дозволяє отримати більше одного результату зіткнення.