PhysicsBody3D
Наследует: CollisionObject3D < Node3D < Node < Object
Наследуется от: CharacterBody3D, PhysicalBone3D, RigidBody3D, StaticBody3D
Абстрактный базовый класс для игровых 3D-объектов, на которые влияет физика.
Описание
PhysicsBody3D — абстрактный базовый класс для 3D-объектов игры, на которые влияет физика. Все 3D-физические тела наследуются от него.
Предупреждение: При неравномерном масштабе этот узел, скорее всего, будет вести себя не так, как ожидалось. Рекомендуется сохранять его масштаб одинаковым по всем осям и вместо этого корректировать его форму(ы) столкновения.
Обучающие материалы
Свойства
|
||
|
||
|
||
|
||
|
||
|
Методы
void |
add_collision_exception_with(body: Node) |
get_axis_lock(axis: BodyAxis) const |
|
get_gravity() const |
|
move_and_collide(motion: Vector3, test_only: bool = false, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1) |
|
void |
|
void |
set_axis_lock(axis: BodyAxis, 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) |
Описания свойств
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() 🔗
Возвращает массив узлов, которые были добавлены как исключения столкновений для этого тела.
Возвращает вектор гравитации, вычисленный из всех источников, которые могут влиять на тело, включая все переопределения гравитации из узлов 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(), motion следует вычислять с помощью delta.
Тело остановится, если столкнется. Возвращает 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, любое отклонение от фазы восстановления также сообщается как столкновение; это полезно для проверки того, будет ли тело касаться других тел.
max_collisions позволяет получить более одного результата столкновения.