reckfellENGINE

RigidBody3D

Динамическое тело 3D, управляемое силами и контактами.

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

RigidBody3D получает движение от физического интегратора. Используйте силы для тяги, импульсы для разового толчка. Непрерывная запись Position/Rotation в _Process конкурирует с симуляцией. Для контролируемого сброса передайте запрос в _IntegrateForces и меняйте PhysicsDirectBodyState.

BodyEntered требует ContactMonitor и положительного MaxContactsReported. Sleeping, Freeze и Disabled формы имеют разные значения. CustomIntegrator отключает обычную интеграцию сил, но не все контакты. Пример проверяет падение, импульс, сброс и заморозку; он не подтверждает любую стопку/скорость/платформу.

Руководство и пример.

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

Конструкторы1

RigidBody3DКонструктор
# RigidBody3D
C#
public RigidBody3D();

Свойства23

AngularDampСвойство
# AngularDamp
C#
public float AngularDamp { get; set; }

Демпфирует вращение тела. По умолчанию тело будет использовать настройку проекта ProjectSettings.physics/3d/default_angular_damp или любое переопределение значения, заданное Area3D, в котором находится тело. В зависимости от RigidBody3D.AngularDampMode вы можете задать RigidBody3D.AngularDamp для добавления или замены значения демпфирования тела. Подробнее о демпфировании см. в ProjectSettings.physics/3d/default_angular_damp.

AngularDampModeСвойство
# AngularDampMode
C#
public RigidBody3D.DampMode AngularDampMode { get; set; }

Определяет, как применяется RigidBody3D.AngularDamp.

AngularVelocityСвойство
# AngularVelocity
C#
public Vector3 AngularVelocity { get; set; }

Скорость вращения RigidBody3D в радианах в секунду.

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

Если true, тело может войти в режим сна при отсутствии движения. RigidBody3D.Sleeping.

CenterOfMassСвойство
# CenterOfMass
C#
public Vector3 CenterOfMass { get; set; }

Центр масс тела, определяемый пользователем, относительно исходного положения тела, когда RigidBody3D.CenterOfMassMode имеет значение RigidBody3D.CenterOfMassModeEnum.Custom. Это точка равновесия тела, в которой приложенные силы вызывают только линейное ускорение. Приложение сил вне центра масс вызывает угловое ускорение. Когда RigidBody3D.CenterOfMassMode имеет значение RigidBody3D.CenterOfMassModeEnum.Auto (значение по умолчанию), центр масс определяется автоматически, но это не приводит к обновлению значения RigidBody3D.CenterOfMass.

CenterOfMassModeСвойство
# CenterOfMassMode
C#
public RigidBody3D.CenterOfMassModeEnum CenterOfMassMode { get; set; }

Определяет способ установки центра массы тела.

ConstantForceСвойство
# ConstantForce
C#
public Vector3 ConstantForce { get; set; }

Общие постоянные позиционные силы тела, применяемые во время каждого обновления физики. См. RigidBody3D.AddConstantForce и RigidBody3D.AddConstantCentralForce.

ConstantTorqueСвойство
# ConstantTorque
C#
public Vector3 ConstantTorque { get; set; }

Общие постоянные вращательные силы тела, применяемые во время каждого обновления физики. См. RigidBody3D.AddConstantTorque.

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

Включает наблюдение за контактами тела. Для сигналов также нужен MaxContactsReported > 0 и реальный контакт подходящих форм; это не обнаружение произвольного визуального пересечения.

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

Если true, используется непрерывное обнаружение столкновений. Непрерывное обнаружение столкновений пытается предсказать, где движущееся тело столкнется, вместо того, чтобы перемещать его и корректировать его движение в случае столкновения. Непрерывное обнаружение столкновений точнее и пропускает меньше ударов небольших быстро движущихся объектов. Если не использовать непрерывное обнаружение столкновений, вычисления выполняются быстрее, но можно пропустить небольшие быстро движущиеся объекты.

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

Если true, стандартная интеграция силы (например, гравитация или демпфирование) будет отключена для этого тела. За исключением реакции на столкновение, тело будет двигаться только так, как определено методом RigidBody3D._IntegrateForces, если этот виртуальный метод переопределен. Установка этого свойства вызовет метод PhysicsServer3D.BodySetOmitForceIntegration внутренне.

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

Если true, тело заморожено. Гравитация и силы больше не применяются. См. RigidBody3D.FreezeMode, чтобы настроить поведение тела в замороженном состоянии. Примечание: Для тела, которое всегда заморожено, используйте StaticBody3D или AnimatableBody3D вместо этого.

FreezeModeСвойство
# FreezeMode
C#
public RigidBody3D.FreezeModeEnum FreezeMode { get; set; }

Режим заморозки тела. Определяет поведение тела, когда RigidBody3D.Freeze имеет значение true. Примечание: Для тела, которое всегда заморожено, используйте StaticBody3D или AnimatableBody3D вместо этого.

GravityScaleСвойство
# GravityScale
C#
public float GravityScale { get; set; }

Это умножается на ProjectSettings.physics/3d/default_gravity, чтобы получить гравитацию этого тела. Например, значение 1.0 применит нормальную гравитацию, 2.0 применит двойную гравитацию, а 0.5 применит половину гравитации к этому телу.

InertiaСвойство
# Inertia
C#
public Vector3 Inertia { get; set; }

Момент инерции тела. Это похоже на массу, но для вращения: он определяет, какой крутящий момент требуется для вращения тела по каждой оси. Момент инерции обычно вычисляется автоматически из массы и форм, но это свойство позволяет вам задать пользовательское значение. Если установлено значение Vector3.Zero, инерция вычисляется автоматически (значение по умолчанию). Примечание: Это значение не изменяется при автоматическом вычислении инерции. Используйте PhysicsServer3D, чтобы получить вычисленную инерцию.

C#
private RigidBody3D _ball;

public override void _Ready()
{
    _ball = GetEntity<RigidBody3D>("Ball");
}

private Vector3 GetBallInertia()
{
    return PhysicsServer3D.BodyGetDirectState(_ball.GetRid()).InverseInertia.Inverse();
}
LinearDampСвойство
# LinearDamp
C#
public float LinearDamp { get; set; }

Демпфирует движение тела. По умолчанию тело будет использовать настройку проекта ProjectSettings.physics/3d/default_linear_damp или любое переопределение значения, заданное Area3D, в котором находится тело. В зависимости от RigidBody3D.LinearDampMode вы можете задать RigidBody3D.LinearDamp для добавления или замены значения демпфирования тела. Подробнее о демпфировании см. в ProjectSettings.physics/3d/default_linear_damp.

LinearDampModeСвойство
# LinearDampMode
C#
public RigidBody3D.DampMode LinearDampMode { get; set; }

Определяет, как применяется RigidBody3D.LinearDamp.

LinearVelocityСвойство
# LinearVelocity
C#
public Vector3 LinearVelocity { get; set; }

Линейная скорость тела в единицах в секунду. Может использоваться спорадически, но не устанавливайте это в каждом кадре, потому что физика может работать в другом потоке и работать с другой гранулярностью. Используйте RigidBody3D._IntegrateForces в качестве цикла процесса для точного управления состоянием тела.

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

Если true, тело не может вращаться. Гравитация и силы применяют только линейное движение.

MassСвойство
# Mass
C#
public float Mass { get; set; }

Масса тела.

MaxContactsReportedСвойство
# MaxContactsReported
C#
public int MaxContactsReported { get; set; }

Максимальное количество контактов, которые будут записаны. Требуется значение больше 0 и RigidBody3D.ContactMonitor для установки в true для начала регистрации контактов. Используйте RigidBody3D.GetContactCount для получения количества или RigidBody3D.GetCollidingBodies для получения тел, с которыми произошло столкновение. Примечание: Количество контактов отличается от количества столкновений. Столкновения между параллельными ребрами приведут к двум контактам (по одному на каждом конце), а столкновения между параллельными гранями приведут к четырем контактам (по одному на каждом углу).

PhysicsMaterialOverrideСвойство
# PhysicsMaterialOverride
C#
public PhysicsMaterial PhysicsMaterialOverride { get; set; }

Переопределение физического материала для тела. Если материал назначен этому свойству, он будет использоваться вместо любого другого физического материала, например унаследованного.

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

Если true, тело не будет двигаться и не будет вычислять силы, пока не будет разбужено другим телом, например, посредством столкновения или с помощью методов RigidBody3D.ApplyImpulse или RigidBody3D.ApplyForce.

Методы62

AddConstantCentralForcevoid
# AddConstantCentralForce
C#
public void AddConstantCentralForce(Vector3 force);

Добавляет постоянную направленную силу, не влияя на вращение, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_force = Vector3(0, 0, 0). Это эквивалентно использованию RigidBody3D.AddConstantForce в центре масс тела.

Параметры
ИмяТипПо умолчанию
forceVector3—
AddConstantForcevoid
# AddConstantForce
C#
public void AddConstantForce(Vector3 force, Vector3? position = default);

Добавляет к телу постоянную позиционную силу, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_force = Vector3(0, 0, 0). position — это смещение от начала координат тела в глобальных координатах.

Параметры
ИмяТипПо умолчанию
forceVector3—
positionVector3?default
position

Если параметр не имеет значения, то значение по умолчанию: new Vector3(0.0f, 0.0f, 0.0f).

AddConstantTorquevoid
# AddConstantTorque
C#
public void AddConstantTorque(Vector3 torque);

Добавляет постоянную вращательную силу, не влияя на положение, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_torque = Vector3(0, 0, 0).

Параметры
ИмяТипПо умолчанию
torqueVector3—
ApplyCentralForcevoid
# ApplyCentralForce
C#
public void ApplyCentralForce(Vector3 force);

Прикладывает силу для текущего физического шага. Для тяги вызывайте каждый нужный _PhysicsProcess; сила уже интегрируется по времени, дополнительное умножение на delta неверно.

Параметры
ИмяТипПо умолчанию
forceVector3—
ApplyCentralImpulsevoid
# ApplyCentralImpulse
C#
public void ApplyCentralImpulse(Vector3 impulse);

Прикладывает центральный импульс один раз. Не умножайте на delta и не вызывайте каждый кадр для непрерывной тяги. Без ограничений/сопротивления изменение скорости зависит от impulse / mass.

Параметры
ИмяТипПо умолчанию
impulseVector3—
ApplyForcevoid
# ApplyForce
C#
public void ApplyForce(Vector3 force, Vector3? position = default);

Применяет позиционированную силу к телу. Сила зависит от времени и должна применяться при каждом обновлении физики. position — это смещение от начала координат тела в глобальных координатах.

Параметры
ИмяТипПо умолчанию
forceVector3—
positionVector3?default
position

Если параметр не имеет значения, то значение по умолчанию: new Vector3(0.0f, 0.0f, 0.0f).

ApplyImpulsevoid
# ApplyImpulse
C#
public void ApplyImpulse(Vector3 impulse, Vector3? position = default);

Применяет позиционированный импульс к телу. Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_force"). position — это смещение от начала координат тела в глобальных координатах.

Параметры
ИмяТипПо умолчанию
impulseVector3—
positionVector3?default
position

Если параметр не имеет значения, то значение по умолчанию: new Vector3(0.0f, 0.0f, 0.0f).

ApplyTorquevoid
# ApplyTorque
C#
public void ApplyTorque(Vector3 torque);

Применяет вращательную силу, не влияя на положение. Сила зависит от времени и должна применяться при каждом обновлении физики. Примечание: для работы требуется RigidBody3D.Inertia. Чтобы иметь RigidBody3D.Inertia, активный CollisionShape3D должен быть дочерним элементом узла, или вы можете вручную задать RigidBody3D.Inertia.

Параметры
ИмяТипПо умолчанию
torqueVector3—
ApplyTorqueImpulsevoid
# ApplyTorqueImpulse
C#
public void ApplyTorqueImpulse(Vector3 impulse);

Применяет вращательный импульс к телу, не влияя на положение. Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_force"). Примечание: для работы требуется RigidBody3D.Inertia. Чтобы иметь RigidBody3D.Inertia, активный CollisionShape3D должен быть дочерним элементом узла, или вы можете вручную задать RigidBody3D.Inertia.

Параметры
ИмяТипПо умолчанию
impulseVector3—
GetAngularDampfloat
# GetAngularDamp
C#
public float GetAngularDamp();
Возвращает float
GetAngularDampModeRigidBody3D.DampMode
# GetAngularDampMode
C#
public RigidBody3D.DampMode GetAngularDampMode();
Возвращает RigidBody3D.DampMode
GetAngularVelocityVector3
# GetAngularVelocity
C#
public Vector3 GetAngularVelocity();
Возвращает Vector3
GetCenterOfMassVector3
# GetCenterOfMass
C#
public Vector3 GetCenterOfMass();
Возвращает Vector3
GetCenterOfMassModeRigidBody3D.CenterOfMassModeEnum
# GetCenterOfMassMode
C#
public RigidBody3D.CenterOfMassModeEnum GetCenterOfMassMode();
Возвращает RigidBody3D.CenterOfMassModeEnum
GetCollidingBodiesReckfell.Collections.Array<Entity3D>
# GetCollidingBodies
C#
public Reckfell.Collections.Array<Entity3D> GetCollidingBodies();

Возвращает список тел, сталкивающихся с этим. Требуется, чтобы RigidBody3D.ContactMonitor был установлен на true, а RigidBody3D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений. Примечание: Результат этого теста не появляется сразу после перемещения объектов. Для повышения производительности список столкновений обновляется один раз за кадр и перед шагом физики. Рассмотрите возможность использования сигналов вместо этого.

Возвращает Reckfell.Collections.Array<Entity3D>
GetConstantForceVector3
# GetConstantForce
C#
public Vector3 GetConstantForce();
Возвращает Vector3
GetConstantTorqueVector3
# GetConstantTorque
C#
public Vector3 GetConstantTorque();
Возвращает Vector3
GetContactCountint
# GetContactCount
C#
public int GetContactCount();

Возвращает количество контактов этого тела с другими телами. По умолчанию возвращается 0, если тела не настроены на отслеживание контактов (см. RigidBody3D.ContactMonitor). Примечание: Чтобы получить сталкивающиеся тела, используйте RigidBody3D.GetCollidingBodies.

Возвращает int
GetFreezeModeRigidBody3D.FreezeModeEnum
# GetFreezeMode
C#
public RigidBody3D.FreezeModeEnum GetFreezeMode();
Возвращает RigidBody3D.FreezeModeEnum
GetGravityScalefloat
# GetGravityScale
C#
public float GetGravityScale();
Возвращает float
GetInertiaVector3
# GetInertia
C#
public Vector3 GetInertia();
Возвращает Vector3
GetInverseInertiaTensorBasis
# GetInverseInertiaTensor
C#
public Basis GetInverseInertiaTensor();

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

Возвращает Basis
GetLinearDampfloat
# GetLinearDamp
C#
public float GetLinearDamp();
Возвращает float
GetLinearDampModeRigidBody3D.DampMode
# GetLinearDampMode
C#
public RigidBody3D.DampMode GetLinearDampMode();
Возвращает RigidBody3D.DampMode
GetLinearVelocityVector3
# GetLinearVelocity
C#
public Vector3 GetLinearVelocity();
Возвращает Vector3
GetMassfloat
# GetMass
C#
public float GetMass();
Возвращает float
GetMaxContactsReportedint
# GetMaxContactsReported
C#
public int GetMaxContactsReported();
Возвращает int
GetPhysicsMaterialOverridePhysicsMaterial
# GetPhysicsMaterialOverride
C#
public PhysicsMaterial GetPhysicsMaterialOverride();
Возвращает PhysicsMaterial
GetVelocityAtLocalPositionVector3
# GetVelocityAtLocalPosition
C#
public Vector3 GetVelocityAtLocalPosition(Vector3 localPosition);

Возвращает скорость тела в указанном относительном положении. local_position - зачет от происхождения тела в глобальных координатах. См. также RigidBody3D.GetVelocityAtPosition.

Параметры
ИмяТипПо умолчанию
localPositionVector3—
Возвращает Vector3
GetVelocityAtPositionVector3
# GetVelocityAtPosition
C#
public Vector3 GetVelocityAtPosition(Vector3 globalPoint);

Возвращает скорость тела в заданном глобальном положении. Это эквивалентно get_velocity_at_local_position(global_point - global_position). См. также RigidBody3D.GetVelocityAtLocalPosition.

Параметры
ИмяТипПо умолчанию
globalPointVector3—
Возвращает Vector3
IsAbleToSleepbool
# IsAbleToSleep
C#
public bool IsAbleToSleep();
Возвращает bool
IsContactMonitorEnabledbool
# IsContactMonitorEnabled
C#
public bool IsContactMonitorEnabled();
Возвращает bool
IsFreezeEnabledbool
# IsFreezeEnabled
C#
public bool IsFreezeEnabled();
Возвращает bool
IsLockRotationEnabledbool
# IsLockRotationEnabled
C#
public bool IsLockRotationEnabled();
Возвращает bool
IsSleepingbool
# IsSleeping
C#
public bool IsSleeping();
Возвращает bool
IsUsingContinuousCollisionDetectionbool
# IsUsingContinuousCollisionDetection
C#
public bool IsUsingContinuousCollisionDetection();
Возвращает bool
IsUsingCustomIntegratorbool
# IsUsingCustomIntegrator
C#
public bool IsUsingCustomIntegrator();
Возвращает bool
SetAngularDampvoid
# SetAngularDamp
C#
public void SetAngularDamp(float angularDamp);
Параметры
ИмяТипПо умолчанию
angularDampfloat—
SetAngularDampModevoid
# SetAngularDampMode
C#
public void SetAngularDampMode(RigidBody3D.DampMode angularDampMode);
Параметры
ИмяТипПо умолчанию
angularDampModeRigidBody3D.DampMode—
SetAngularVelocityvoid
# SetAngularVelocity
C#
public void SetAngularVelocity(Vector3 angularVelocity);
Параметры
ИмяТипПо умолчанию
angularVelocityVector3—
SetAxisVelocityvoid
# SetAxisVelocity
C#
public void SetAxisVelocity(Vector3 axisVelocity);

Устанавливает скорость оси. Скорость в данной векторной оси будет установлена как заданная длина вектора. Это полезно для поведения прыжка.

Параметры
ИмяТипПо умолчанию
axisVelocityVector3—
SetCanSleepvoid
# SetCanSleep
C#
public void SetCanSleep(bool ableToSleep);
Параметры
ИмяТипПо умолчанию
ableToSleepbool—
SetCenterOfMassvoid
# SetCenterOfMass
C#
public void SetCenterOfMass(Vector3 centerOfMass);
Параметры
ИмяТипПо умолчанию
centerOfMassVector3—
SetCenterOfMassModevoid
# SetCenterOfMassMode
C#
public void SetCenterOfMassMode(RigidBody3D.CenterOfMassModeEnum mode);
Параметры
ИмяТипПо умолчанию
modeRigidBody3D.CenterOfMassModeEnum—
SetConstantForcevoid
# SetConstantForce
C#
public void SetConstantForce(Vector3 force);
Параметры
ИмяТипПо умолчанию
forceVector3—
SetConstantTorquevoid
# SetConstantTorque
C#
public void SetConstantTorque(Vector3 torque);
Параметры
ИмяТипПо умолчанию
torqueVector3—
SetContactMonitorvoid
# SetContactMonitor
C#
public void SetContactMonitor(bool enabled);
Параметры
ИмяТипПо умолчанию
enabledbool—
SetFreezeEnabledvoid
# SetFreezeEnabled
C#
public void SetFreezeEnabled(bool freezeMode);
Параметры
ИмяТипПо умолчанию
freezeModebool—
SetFreezeModevoid
# SetFreezeMode
C#
public void SetFreezeMode(RigidBody3D.FreezeModeEnum freezeMode);
Параметры
ИмяТипПо умолчанию
freezeModeRigidBody3D.FreezeModeEnum—
SetGravityScalevoid
# SetGravityScale
C#
public void SetGravityScale(float gravityScale);
Параметры
ИмяТипПо умолчанию
gravityScalefloat—
SetInertiavoid
# SetInertia
C#
public void SetInertia(Vector3 inertia);
Параметры
ИмяТипПо умолчанию
inertiaVector3—
SetLinearDampvoid
# SetLinearDamp
C#
public void SetLinearDamp(float linearDamp);
Параметры
ИмяТипПо умолчанию
linearDampfloat—
SetLinearDampModevoid
# SetLinearDampMode
C#
public void SetLinearDampMode(RigidBody3D.DampMode linearDampMode);
Параметры
ИмяТипПо умолчанию
linearDampModeRigidBody3D.DampMode—
SetLinearVelocityvoid
# SetLinearVelocity
C#
public void SetLinearVelocity(Vector3 linearVelocity);
Параметры
ИмяТипПо умолчанию
linearVelocityVector3—
SetLockRotationEnabledvoid
# SetLockRotationEnabled
C#
public void SetLockRotationEnabled(bool lockRotation);
Параметры
ИмяТипПо умолчанию
lockRotationbool—
SetMassvoid
# SetMass
C#
public void SetMass(float mass);
Параметры
ИмяТипПо умолчанию
massfloat—
SetMaxContactsReportedvoid
# SetMaxContactsReported
C#
public void SetMaxContactsReported(int amount);
Параметры
ИмяТипПо умолчанию
amountint—
SetPhysicsMaterialOverridevoid
# SetPhysicsMaterialOverride
C#
public void SetPhysicsMaterialOverride(PhysicsMaterial physicsMaterialOverride);
Параметры
ИмяТипПо умолчанию
physicsMaterialOverridePhysicsMaterial—
SetSleepingvoid
# SetSleeping
C#
public void SetSleeping(bool sleeping);
Параметры
ИмяТипПо умолчанию
sleepingbool—
SetUseContinuousCollisionDetectionvoid
# SetUseContinuousCollisionDetection
C#
public void SetUseContinuousCollisionDetection(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetUseCustomIntegratorvoid
# SetUseCustomIntegrator
C#
public void SetUseCustomIntegrator(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
_IntegrateForcesvoid
# _IntegrateForces
C#
public virtual void _IntegrateForces(PhysicsDirectBodyState3D state);

Физический callback для контролируемой работы с состоянием. При телепорте меняйте state.Transform и явно обнуляйте нужные скорости. Не используйте частую запись Position в _Process вместо интегратора.

Параметры
ИмяТипПо умолчанию
statePhysicsDirectBodyState3D—

Сигналы и события5

BodyEnteredСобытие
# BodyEntered
C#
public event RigidBody3D.BodyEnteredEventHandler BodyEntered;

Вызывается при столкновении с другим PhysicsBody3D или GridMap. Требуется, чтобы RigidBody3D.ContactMonitor был установлен на true, а RigidBody3D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений. GridMap обнаруживаются, если MeshLibrary имеет Collision Shape3D. body Entity, если он существует в дереве, другого PhysicsBody3D или GridMap.

Параметры обработчика
ИмяТипПо умолчанию
bodyEntity—
BodyExitedСобытие
# BodyExited
C#
public event RigidBody3D.BodyExitedEventHandler BodyExited;

Выдается, когда заканчивается столкновение с другим PhysicsBody3D или GridMap. Требует, чтобы RigidBody3D.ContactMonitor был установлен на true, а RigidBody3D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений. GridMap обнаруживаются, если MeshLibrary имеет Collision Shape3D. body Entity, если он существует в дереве, другого PhysicsBody3D или GridMap.

Параметры обработчика
ИмяТипПо умолчанию
bodyEntity—
BodyShapeEnteredСобытие
# BodyShapeEntered
C#
public event RigidBody3D.BodyShapeEnteredEventHandler BodyShapeEntered;

Выдается, когда один из Shape3D-ов этого RigidBody3D сталкивается с Shape3D-ов другого PhysicsBody3D или GridMap. Требует, чтобы RigidBody3D.ContactMonitor был установлен на true, а RigidBody3D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений. GridMap-ов обнаруживаются, если MeshLibrary имеет Collision Shape3D-ов. body_rid Rid другого PhysicsBody3D или MeshLibrary CollisionObject3D, используемого PhysicsServer3D. body Entity, если он существует в дереве, другого PhysicsBody3D или GridMap. body_shape_index индекс Shape3D другого PhysicsBody3D или GridMap, используемого PhysicsServer3D. Получите узел CollisionShape3D с помощью body.shape_owner_get_owner(body.shape_find_owner(body_shape_index)). local_shape_index индекс Shape3D этого RigidBody3D, используемого PhysicsServer3D. Получите узел CollisionShape3D с помощью self.shape_owner_get_owner(self.shape_find_owner(local_shape_index)).

Параметры обработчика
ИмяТипПо умолчанию
bodyRidRid—
bodyEntity—
bodyShapeIndexlong—
localShapeIndexlong—
BodyShapeExitedСобытие
# BodyShapeExited
C#
public event RigidBody3D.BodyShapeExitedEventHandler BodyShapeExited;

Выдается, когда заканчивается столкновение между одним из Shape3D-ов этого RigidBody3D и другим PhysicsBody3D или Shape3D-ов GridMap. Требует, чтобы RigidBody3D.ContactMonitor был установлен на true, а RigidBody3D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений. GridMap-ы обнаруживаются, если MeshLibrary имеет Collision Shape3D-ов. body_rid Rid других PhysicsBody3D или MeshLibrary CollisionObject3D, используемых PhysicsServer3D. GridMap-ы обнаруживаются, если у сеток есть Shape3D-ы. body Entity, если он существует в дереве, другого PhysicsBody3D или GridMap. body_shape_index индекс Shape3D другого PhysicsBody3D или GridMap, используемого PhysicsServer3D. Получите узел CollisionShape3D с помощью body.shape_owner_get_owner(body.shape_find_owner(body_shape_index)). local_shape_index индекс Shape3D этого RigidBody3D, используемого PhysicsServer3D. Получите узел CollisionShape3D с помощью self.shape_owner_get_owner(self.shape_find_owner(local_shape_index)).

Параметры обработчика
ИмяТипПо умолчанию
bodyRidRid—
bodyEntity—
bodyShapeIndexlong—
localShapeIndexlong—
SleepingStateChangedСобытие
# SleepingStateChanged
C#
public event Action SleepingStateChanged;

Выдается, когда физический движок изменяет состояние сна тела. Примечание: Изменение значения RigidBody3D.Sleeping не вызовет этот сигнал. Он выдается только в том случае, если состояние сна изменено физическим движком или используется emit_signal("sleeping_state_changed").

RigidBody3D.CenterOfMassModeEnum

ЗначениеОписание
Auto = 0

В этом режиме центр масс тела вычисляется автоматически на основе его форм. Это предполагает, что начало форм также является их центром масс.

Custom = 1

В этом режиме центр масс тела задается через RigidBody3D.CenterOfMass. По умолчанию — исходное положение тела.

RigidBody3D.DampMode

ЗначениеОписание
Combine = 0

В этом режиме значение демпфирования тела добавляется к любому значению, заданному в областях, или к значению по умолчанию.

Replace = 1

В этом режиме значение демпфирования тела заменяет любое значение, заданное в областях, или значение по умолчанию.

RigidBody3D.FreezeModeEnum

ЗначениеОписание
Kinematic = 1

Режим кинематической заморозки тела. Похож на RigidBody3D.FreezeModeEnum.Static, но сталкивается с другими телами на своем пути при перемещении. Полезно для замороженного тела, которое нужно анимировать.

Static = 0

Режим статической заморозки тела (по умолчанию). Тело не подвержено влиянию гравитации и сил. Его можно перемещать только с помощью пользовательского кода, и оно не сталкивается с другими телами на своем пути.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

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

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

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