PhysicsBody3D
Базовый класс физических тел 3D.
PhysicsBody3D объединяет операции тела и запрос движения MoveAndCollide. Для управляемого персонажа выбирайте CharacterBody, для сил/импульсов RigidBody, для стены StaticBody.
MoveAndCollide проверяет перемещение в единицах расстояния, возвращает контакт либо null и может работать в testOnly без перемещения. Ответ не является автоматическим скольжением или отражением. GetGravity предоставляет действующее поле; применение к скорости персонажа остаётся вашей логикой.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Свойства6
AxisLockAngularXСвойство
public bool AxisLockAngularX { get; set; }Зафиксируйте вращение тела по оси X.
AxisLockAngularYСвойство
public bool AxisLockAngularY { get; set; }Зафиксируйте вращение тела по оси Y.
AxisLockAngularZСвойство
public bool AxisLockAngularZ { get; set; }Зафиксируйте вращение тела по оси Z.
AxisLockLinearXСвойство
public bool AxisLockLinearX { get; set; }Зафиксируйте линейное движение тела по оси X.
AxisLockLinearYСвойство
public bool AxisLockLinearY { get; set; }Зафиксируйте линейное движение тела по оси Y.
AxisLockLinearZСвойство
public bool AxisLockLinearZ { get; set; }Зафиксируйте линейное движение тела по оси Z.
Методы8
AddCollisionExceptionWithvoid
public void AddCollisionExceptionWith(Entity body);Добавляет тело в список тел, с которыми данное тело не может столкнуться.
| Имя | Тип | По умолчанию |
|---|---|---|
body | Entity | — |
GetAxisLockbool
public bool GetAxisLock(PhysicsServer3D.BodyAxis axis);Возвращает true, если указанная линейная или вращательная axis заблокирована.
| Имя | Тип | По умолчанию |
|---|---|---|
axis | PhysicsServer3D.BodyAxis | — |
boolGetCollisionExceptionsReckfell.Collections.Array<PhysicsBody3D>
public Reckfell.Collections.Array<PhysicsBody3D> GetCollisionExceptions();Возвращает массив узлов, которые были добавлены как исключения столкновений для этого тела.
Reckfell.Collections.Array<PhysicsBody3D>GetGravityVector3
public Vector3 GetGravity();Возвращает вектор гравитации, вычисленный из всех источников, которые могут влиять на тело, включая все переопределения гравитации из узлов Area3D и глобальную мировую гравитацию.
Vector3MoveAndCollideKinematicCollision3D
public KinematicCollision3D MoveAndCollide(Vector3 motion, bool testOnly = false, float safeMargin = 0.001f, bool recoveryAsCollision = false, int maxCollisions = 1);Проверяет перемещение за вызов, обычно velocity × delta. Возвращает KinematicCollision либо null. testOnly не перемещает тело; скольжение/отражение остатка задаётся отдельно.
| Имя | Тип | По умолчанию |
|---|---|---|
motion | Vector3 | — |
testOnly | bool | false |
safeMargin | float | 0.001f |
recoveryAsCollision | bool | false |
maxCollisions | int | 1 |
KinematicCollision3DRemoveCollisionExceptionWithvoid
public void RemoveCollisionExceptionWith(Entity body);Удаляет тело из списка тел, с которыми данное тело не может столкнуться.
| Имя | Тип | По умолчанию |
|---|---|---|
body | Entity | — |
SetAxisLockvoid
public void SetAxisLock(PhysicsServer3D.BodyAxis axis, bool @lock);Блокирует или разблокирует указанную линейную или вращательную axis в зависимости от значения lock.
| Имя | Тип | По умолчанию |
|---|---|---|
axis | PhysicsServer3D.BodyAxis | — |
lock | bool | — |
TestMovebool
public bool TestMove(Transform3D from, Vector3 motion, KinematicCollision3D collision = null, float safeMargin = 0.001f, bool recoveryAsCollision = false, int maxCollisions = 1);Проверяет наличие столкновений без перемещения тела. Чтобы не зависеть от частоты кадров в Entity._PhysicsProcess или Entity._Process, motion следует вычислять с помощью delta.
Виртуально устанавливает положение, масштаб и поворот узла в соответствии с заданным Transform3D, затем пытается переместить тело по вектору motion. Возвращает true, если столкновение остановит движение тела по всему пути.
collision — необязательный объект типа KinematicCollision3D, который содержит дополнительную информацию о столкновении при остановке или при касании другого тела по ходу движения.
safe_margin — дополнительный запас, используемый для восстановления столкновений (подробнее см. в CharacterBody3D.SafeMargin).
Если recovery_as_collision равен true, любое отклонение от фазы восстановления также сообщается как столкновение; это полезно для проверки того, будет ли тело касаться других тел.
max_collisions позволяет получить более одного результата столкновения.
| Имя | Тип | По умолчанию |
|---|---|---|
from | Transform3D | — |
motion | Vector3 | — |
collision | KinematicCollision3D | null |
safeMargin | float | 0.001f |
recoveryAsCollision | bool | false |
maxCollisions | int | 1 |
bool