PhysicsBody2D

Наследует: CollisionObject2D < Node2D < CanvasItem < Node < Object

Наследуется от: CharacterBody2D, RigidBody2D, StaticBody2D

Абстрактный базовый класс для 2D-игровых объектов, на которые влияет физика.

Описание

PhysicsBody2D — абстрактный базовый класс для 2D-игровых объектов, на которые влияет физика. Все 2D-физические тела наследуются от него.

Обучающие материалы

Свойства

bool

input_pickable

false (overrides CollisionObject2D)

Методы

void

add_collision_exception_with(body: Node)

Array[PhysicsBody2D]

get_collision_exceptions()

Vector2

get_gravity() const

KinematicCollision2D

move_and_collide(motion: Vector2, test_only: bool = false, safe_margin: float = 0.08, recovery_as_collision: bool = false)

void

remove_collision_exception_with(body: Node)

bool

test_move(from: Transform2D, motion: Vector2, collision: KinematicCollision2D = null, safe_margin: float = 0.08, recovery_as_collision: bool = false)


Описания метода

void add_collision_exception_with(body: Node) 🔗

Добавляет тело в список тел, с которыми данное тело не может столкнуться.


Array[PhysicsBody2D] get_collision_exceptions() 🔗

Возвращает массив узлов, которые были добавлены как исключения столкновений для этого тела.


Vector2 get_gravity() const 🔗

Возвращает вектор гравитации, вычисленный из всех источников, которые могут влиять на тело, включая все переопределения гравитации из узлов Area2D и глобальную мировую гравитацию.


KinematicCollision2D move_and_collide(motion: Vector2, test_only: bool = false, safe_margin: float = 0.08, recovery_as_collision: bool = false) 🔗

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

Возвращает KinematicCollision2D, который содержит информацию о столкновении при остановке или при касании другого тела по ходу движения.

Если test_only равен true, тело не движется, но предоставляется информация о возможном столкновении.

safe_margin — это дополнительный запас, используемый для восстановления после столкновения (см. CharacterBody2D.safe_margin для получения более подробной информации).

Если recovery_as_collision равен true, любое отклонение от фазы восстановления также сообщается как столкновение; это используется, например, CharacterBody2D для улучшения обнаружения пола во время привязки к полу.


void remove_collision_exception_with(body: Node) 🔗

Удаляет тело из списка тел, с которыми данное тело не может столкнуться.


bool test_move(from: Transform2D, motion: Vector2, collision: KinematicCollision2D = null, safe_margin: float = 0.08, recovery_as_collision: bool = false) 🔗

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

Виртуально устанавливает положение, масштаб и поворот узла в соответствии с заданным Transform2D, затем пытается переместить тело по вектору motion. Возвращает true, если столкновение остановит движение тела по всему пути.

collision — необязательный объект типа KinematicCollision2D, который содержит дополнительную информацию о столкновении при остановке или при касании другого тела по ходу движения.

safe_margin — дополнительный запас, используемый для восстановления при столкновении (подробнее см. в CharacterBody2D.safe_margin).

Если recovery_as_collision имеет значение true, любое отклонение от фазы восстановления также считается столкновением; это полезно для проверки того, будет ли тело касаться других тел.