PhysicsBody2D
Базовый класс физических тел 2D.
PhysicsBody2D объединяет операции тела и запрос движения MoveAndCollide. Для управляемого персонажа выбирайте CharacterBody, для сил/импульсов RigidBody, для стены StaticBody.
MoveAndCollide проверяет перемещение в единицах расстояния, возвращает контакт либо null и может работать в testOnly без перемещения. Ответ не является автоматическим скольжением или отражением. GetGravity предоставляет действующее поле; применение к скорости персонажа остаётся вашей логикой.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Методы6
AddCollisionExceptionWithvoid
public void AddCollisionExceptionWith(Entity body);Добавляет тело в список тел, с которыми данное тело не может столкнуться.
| Имя | Тип | По умолчанию |
|---|---|---|
body | Entity | — |
GetCollisionExceptionsReckfell.Collections.Array<PhysicsBody2D>
public Reckfell.Collections.Array<PhysicsBody2D> GetCollisionExceptions();Возвращает массив узлов, которые были добавлены как исключения столкновений для этого тела.
Reckfell.Collections.Array<PhysicsBody2D>GetGravityVector2
public Vector2 GetGravity();Возвращает вектор гравитации, вычисленный из всех источников, которые могут влиять на тело, включая все переопределения гравитации из узлов Area2D и глобальную мировую гравитацию.
Vector2MoveAndCollideKinematicCollision2D
public KinematicCollision2D MoveAndCollide(Vector2 motion, bool testOnly = false, float safeMargin = 0.08f, bool recoveryAsCollision = false);Проверяет перемещение за вызов, обычно velocity × delta. Возвращает KinematicCollision либо null. testOnly не перемещает тело; скольжение/отражение остатка задаётся отдельно.
| Имя | Тип | По умолчанию |
|---|---|---|
motion | Vector2 | — |
testOnly | bool | false |
safeMargin | float | 0.08f |
recoveryAsCollision | bool | false |
KinematicCollision2DRemoveCollisionExceptionWithvoid
public void RemoveCollisionExceptionWith(Entity body);Удаляет тело из списка тел, с которыми данное тело не может столкнуться.
| Имя | Тип | По умолчанию |
|---|---|---|
body | Entity | — |
TestMovebool
public bool TestMove(Transform2D from, Vector2 motion, KinematicCollision2D collision = null, float safeMargin = 0.08f, bool recoveryAsCollision = false);Проверяет наличие столкновений без перемещения тела. Чтобы не зависеть от частоты кадров в Entity._PhysicsProcess или Entity._Process, motion следует вычислять с помощью delta.
Виртуально устанавливает положение, масштаб и поворот узла в соответствии с заданным Transform2D, затем пытается переместить тело по вектору motion. Возвращает true, если столкновение остановит движение тела по всему пути.
collision — необязательный объект типа KinematicCollision2D, который содержит дополнительную информацию о столкновении при остановке или при касании другого тела по ходу движения.
safe_margin — дополнительный запас, используемый для восстановления при столкновении (подробнее см. в CharacterBody2D.SafeMargin).
Если recovery_as_collision имеет значение true, любое отклонение от фазы восстановления также считается столкновением; это полезно для проверки того, будет ли тело касаться других тел.
| Имя | Тип | По умолчанию |
|---|---|---|
from | Transform2D | — |
motion | Vector2 | — |
collision | KinematicCollision2D | null |
safeMargin | float | 0.08f |
recoveryAsCollision | bool | false |
bool