reckfellENGINE

PhysicsBody3D

Базовый класс физических тел 3D.

На этой странице
class PhysicsBody3DReckfellSharpНаследует CollisionObject3D

PhysicsBody3D объединяет операции тела и запрос движения MoveAndCollide. Для управляемого персонажа выбирайте CharacterBody, для сил/импульсов RigidBody, для стены StaticBody.

MoveAndCollide проверяет перемещение в единицах расстояния, возвращает контакт либо null и может работать в testOnly без перемещения. Ответ не является автоматическим скольжением или отражением. GetGravity предоставляет действующее поле; применение к скорости персонажа остаётся вашей логикой.

Рабочие примеры.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Свойства6

AxisLockAngularXСвойство
# AxisLockAngularX
C#
public bool AxisLockAngularX { get; set; }

Зафиксируйте вращение тела по оси X.

AxisLockAngularYСвойство
# AxisLockAngularY
C#
public bool AxisLockAngularY { get; set; }

Зафиксируйте вращение тела по оси Y.

AxisLockAngularZСвойство
# AxisLockAngularZ
C#
public bool AxisLockAngularZ { get; set; }

Зафиксируйте вращение тела по оси Z.

AxisLockLinearXСвойство
# AxisLockLinearX
C#
public bool AxisLockLinearX { get; set; }

Зафиксируйте линейное движение тела по оси X.

AxisLockLinearYСвойство
# AxisLockLinearY
C#
public bool AxisLockLinearY { get; set; }

Зафиксируйте линейное движение тела по оси Y.

AxisLockLinearZСвойство
# AxisLockLinearZ
C#
public bool AxisLockLinearZ { get; set; }

Зафиксируйте линейное движение тела по оси Z.

Методы8

AddCollisionExceptionWithvoid
# AddCollisionExceptionWith
C#
public void AddCollisionExceptionWith(Entity body);

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

Параметры
ИмяТипПо умолчанию
bodyEntity—
GetAxisLockbool
# GetAxisLock
C#
public bool GetAxisLock(PhysicsServer3D.BodyAxis axis);

Возвращает true, если указанная линейная или вращательная axis заблокирована.

Параметры
ИмяТипПо умолчанию
axisPhysicsServer3D.BodyAxis—
Возвращает bool
GetCollisionExceptionsReckfell.Collections.Array<PhysicsBody3D>
# GetCollisionExceptions
C#
public Reckfell.Collections.Array<PhysicsBody3D> GetCollisionExceptions();

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

Возвращает Reckfell.Collections.Array<PhysicsBody3D>
GetGravityVector3
# GetGravity
C#
public Vector3 GetGravity();

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

Возвращает Vector3
MoveAndCollideKinematicCollision3D
# MoveAndCollide
C#
public KinematicCollision3D MoveAndCollide(Vector3 motion, bool testOnly = false, float safeMargin = 0.001f, bool recoveryAsCollision = false, int maxCollisions = 1);

Проверяет перемещение за вызов, обычно velocity × delta. Возвращает KinematicCollision либо null. testOnly не перемещает тело; скольжение/отражение остатка задаётся отдельно.

Параметры
ИмяТипПо умолчанию
motionVector3—
testOnlyboolfalse
safeMarginfloat0.001f
recoveryAsCollisionboolfalse
maxCollisionsint1
Возвращает KinematicCollision3D
RemoveCollisionExceptionWithvoid
# RemoveCollisionExceptionWith
C#
public void RemoveCollisionExceptionWith(Entity body);

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

Параметры
ИмяТипПо умолчанию
bodyEntity—
SetAxisLockvoid
# SetAxisLock
C#
public void SetAxisLock(PhysicsServer3D.BodyAxis axis, bool @lock);

Блокирует или разблокирует указанную линейную или вращательную axis в зависимости от значения lock.

Параметры
ИмяТипПо умолчанию
axisPhysicsServer3D.BodyAxis—
lockbool—
TestMovebool
# TestMove
C#
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 позволяет получить более одного результата столкновения.

Параметры
ИмяТипПо умолчанию
fromTransform3D—
motionVector3—
collisionKinematicCollision3Dnull
safeMarginfloat0.001f
recoveryAsCollisionboolfalse
maxCollisionsint1
Возвращает bool
Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.