RigidBody3D
Динамическое тело 3D, управляемое силами и контактами.
RigidBody3D получает движение от физического интегратора. Используйте силы для тяги, импульсы для разового толчка. Непрерывная запись Position/Rotation в _Process конкурирует с симуляцией. Для контролируемого сброса передайте запрос в _IntegrateForces и меняйте PhysicsDirectBodyState.
BodyEntered требует ContactMonitor и положительного MaxContactsReported. Sleeping, Freeze и Disabled формы имеют разные значения. CustomIntegrator отключает обычную интеграцию сил, но не все контакты. Пример проверяет падение, импульс, сброс и заморозку; он не подтверждает любую стопку/скорость/платформу.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
RigidBody3DКонструктор
public RigidBody3D();Свойства23
AngularDampСвойство
public float AngularDamp { get; set; }Демпфирует вращение тела. По умолчанию тело будет использовать настройку проекта ProjectSettings.physics/3d/default_angular_damp или любое переопределение значения, заданное Area3D, в котором находится тело. В зависимости от RigidBody3D.AngularDampMode вы можете задать RigidBody3D.AngularDamp для добавления или замены значения демпфирования тела.
Подробнее о демпфировании см. в ProjectSettings.physics/3d/default_angular_damp.
AngularDampModeСвойство
public RigidBody3D.DampMode AngularDampMode { get; set; }Определяет, как применяется RigidBody3D.AngularDamp.
AngularVelocityСвойство
public Vector3 AngularVelocity { get; set; }Скорость вращения RigidBody3D в радианах в секунду.
CanSleepСвойство
public bool CanSleep { get; set; }Если true, тело может войти в режим сна при отсутствии движения. RigidBody3D.Sleeping.
CenterOfMassСвойство
public Vector3 CenterOfMass { get; set; }Центр масс тела, определяемый пользователем, относительно исходного положения тела, когда RigidBody3D.CenterOfMassMode имеет значение RigidBody3D.CenterOfMassModeEnum.Custom. Это точка равновесия тела, в которой приложенные силы вызывают только линейное ускорение. Приложение сил вне центра масс вызывает угловое ускорение.
Когда RigidBody3D.CenterOfMassMode имеет значение RigidBody3D.CenterOfMassModeEnum.Auto (значение по умолчанию), центр масс определяется автоматически, но это не приводит к обновлению значения RigidBody3D.CenterOfMass.
CenterOfMassModeСвойство
public RigidBody3D.CenterOfMassModeEnum CenterOfMassMode { get; set; }Определяет способ установки центра массы тела.
ConstantForceСвойство
public Vector3 ConstantForce { get; set; }Общие постоянные позиционные силы тела, применяемые во время каждого обновления физики.
См. RigidBody3D.AddConstantForce и RigidBody3D.AddConstantCentralForce.
ConstantTorqueСвойство
public Vector3 ConstantTorque { get; set; }Общие постоянные вращательные силы тела, применяемые во время каждого обновления физики.
См. RigidBody3D.AddConstantTorque.
ContactMonitorСвойство
public bool ContactMonitor { get; set; }Включает наблюдение за контактами тела. Для сигналов также нужен MaxContactsReported > 0 и реальный контакт подходящих форм; это не обнаружение произвольного визуального пересечения.
ContinuousCdСвойство
public bool ContinuousCd { get; set; }Если true, используется непрерывное обнаружение столкновений.
Непрерывное обнаружение столкновений пытается предсказать, где движущееся тело столкнется, вместо того, чтобы перемещать его и корректировать его движение в случае столкновения. Непрерывное обнаружение столкновений точнее и пропускает меньше ударов небольших быстро движущихся объектов. Если не использовать непрерывное обнаружение столкновений, вычисления выполняются быстрее, но можно пропустить небольшие быстро движущиеся объекты.
CustomIntegratorСвойство
public bool CustomIntegrator { get; set; }Если true, стандартная интеграция силы (например, гравитация или демпфирование) будет отключена для этого тела. За исключением реакции на столкновение, тело будет двигаться только так, как определено методом RigidBody3D._IntegrateForces, если этот виртуальный метод переопределен.
Установка этого свойства вызовет метод PhysicsServer3D.BodySetOmitForceIntegration внутренне.
FreezeСвойство
public bool Freeze { get; set; }Если true, тело заморожено. Гравитация и силы больше не применяются.
См. RigidBody3D.FreezeMode, чтобы настроить поведение тела в замороженном состоянии.
Примечание: Для тела, которое всегда заморожено, используйте StaticBody3D или AnimatableBody3D вместо этого.
FreezeModeСвойство
public RigidBody3D.FreezeModeEnum FreezeMode { get; set; }Режим заморозки тела. Определяет поведение тела, когда RigidBody3D.Freeze имеет значение true.
Примечание: Для тела, которое всегда заморожено, используйте StaticBody3D или AnimatableBody3D вместо этого.
GravityScaleСвойство
public float GravityScale { get; set; }Это умножается на ProjectSettings.physics/3d/default_gravity, чтобы получить гравитацию этого тела. Например, значение 1.0 применит нормальную гравитацию, 2.0 применит двойную гравитацию, а 0.5 применит половину гравитации к этому телу.
InertiaСвойство
public Vector3 Inertia { get; set; }Момент инерции тела. Это похоже на массу, но для вращения: он определяет, какой крутящий момент требуется для вращения тела по каждой оси. Момент инерции обычно вычисляется автоматически из массы и форм, но это свойство позволяет вам задать пользовательское значение.
Если установлено значение Vector3.Zero, инерция вычисляется автоматически (значение по умолчанию).
Примечание: Это значение не изменяется при автоматическом вычислении инерции. Используйте PhysicsServer3D, чтобы получить вычисленную инерцию.
private RigidBody3D _ball;
public override void _Ready()
{
_ball = GetEntity<RigidBody3D>("Ball");
}
private Vector3 GetBallInertia()
{
return PhysicsServer3D.BodyGetDirectState(_ball.GetRid()).InverseInertia.Inverse();
}LinearDampСвойство
public float LinearDamp { get; set; }Демпфирует движение тела. По умолчанию тело будет использовать настройку проекта ProjectSettings.physics/3d/default_linear_damp или любое переопределение значения, заданное Area3D, в котором находится тело. В зависимости от RigidBody3D.LinearDampMode вы можете задать RigidBody3D.LinearDamp для добавления или замены значения демпфирования тела.
Подробнее о демпфировании см. в ProjectSettings.physics/3d/default_linear_damp.
LinearDampModeСвойство
public RigidBody3D.DampMode LinearDampMode { get; set; }Определяет, как применяется RigidBody3D.LinearDamp.
LinearVelocityСвойство
public Vector3 LinearVelocity { get; set; }Линейная скорость тела в единицах в секунду. Может использоваться спорадически, но не устанавливайте это в каждом кадре, потому что физика может работать в другом потоке и работать с другой гранулярностью. Используйте RigidBody3D._IntegrateForces в качестве цикла процесса для точного управления состоянием тела.
LockRotationСвойство
public bool LockRotation { get; set; }Если true, тело не может вращаться. Гравитация и силы применяют только линейное движение.
MassСвойство
public float Mass { get; set; }Масса тела.
MaxContactsReportedСвойство
public int MaxContactsReported { get; set; }Максимальное количество контактов, которые будут записаны. Требуется значение больше 0 и RigidBody3D.ContactMonitor для установки в true для начала регистрации контактов. Используйте RigidBody3D.GetContactCount для получения количества или RigidBody3D.GetCollidingBodies для получения тел, с которыми произошло столкновение.
Примечание: Количество контактов отличается от количества столкновений. Столкновения между параллельными ребрами приведут к двум контактам (по одному на каждом конце), а столкновения между параллельными гранями приведут к четырем контактам (по одному на каждом углу).
PhysicsMaterialOverrideСвойство
public PhysicsMaterial PhysicsMaterialOverride { get; set; }Переопределение физического материала для тела. Если материал назначен этому свойству, он будет использоваться вместо любого другого физического материала, например унаследованного.
SleepingСвойство
public bool Sleeping { get; set; }Если true, тело не будет двигаться и не будет вычислять силы, пока не будет разбужено другим телом, например, посредством столкновения или с помощью методов RigidBody3D.ApplyImpulse или RigidBody3D.ApplyForce.
Методы62
AddConstantCentralForcevoid
public void AddConstantCentralForce(Vector3 force);Добавляет постоянную направленную силу, не влияя на вращение, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_force = Vector3(0, 0, 0).
Это эквивалентно использованию RigidBody3D.AddConstantForce в центре масс тела.
| Имя | Тип | По умолчанию |
|---|---|---|
force | Vector3 | — |
AddConstantForcevoid
public void AddConstantForce(Vector3 force, Vector3? position = default);Добавляет к телу постоянную позиционную силу, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_force = Vector3(0, 0, 0).
position — это смещение от начала координат тела в глобальных координатах.
| Имя | Тип | По умолчанию |
|---|---|---|
force | Vector3 | — |
position | Vector3? | default |
positionЕсли параметр не имеет значения, то значение по умолчанию: new Vector3(0.0f, 0.0f, 0.0f).
AddConstantTorquevoid
public void AddConstantTorque(Vector3 torque);Добавляет постоянную вращательную силу, не влияя на положение, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_torque = Vector3(0, 0, 0).
| Имя | Тип | По умолчанию |
|---|---|---|
torque | Vector3 | — |
ApplyCentralForcevoid
public void ApplyCentralForce(Vector3 force);Прикладывает силу для текущего физического шага. Для тяги вызывайте каждый нужный _PhysicsProcess; сила уже интегрируется по времени, дополнительное умножение на delta неверно.
| Имя | Тип | По умолчанию |
|---|---|---|
force | Vector3 | — |
ApplyCentralImpulsevoid
public void ApplyCentralImpulse(Vector3 impulse);Прикладывает центральный импульс один раз. Не умножайте на delta и не вызывайте каждый кадр для непрерывной тяги. Без ограничений/сопротивления изменение скорости зависит от impulse / mass.
| Имя | Тип | По умолчанию |
|---|---|---|
impulse | Vector3 | — |
ApplyForcevoid
public void ApplyForce(Vector3 force, Vector3? position = default);Применяет позиционированную силу к телу. Сила зависит от времени и должна применяться при каждом обновлении физики.
position — это смещение от начала координат тела в глобальных координатах.
| Имя | Тип | По умолчанию |
|---|---|---|
force | Vector3 | — |
position | Vector3? | default |
positionЕсли параметр не имеет значения, то значение по умолчанию: new Vector3(0.0f, 0.0f, 0.0f).
ApplyImpulsevoid
public void ApplyImpulse(Vector3 impulse, Vector3? position = default);Применяет позиционированный импульс к телу.
Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_force").
position — это смещение от начала координат тела в глобальных координатах.
| Имя | Тип | По умолчанию |
|---|---|---|
impulse | Vector3 | — |
position | Vector3? | default |
positionЕсли параметр не имеет значения, то значение по умолчанию: new Vector3(0.0f, 0.0f, 0.0f).
ApplyTorquevoid
public void ApplyTorque(Vector3 torque);Применяет вращательную силу, не влияя на положение. Сила зависит от времени и должна применяться при каждом обновлении физики.
Примечание: для работы требуется RigidBody3D.Inertia. Чтобы иметь RigidBody3D.Inertia, активный CollisionShape3D должен быть дочерним элементом узла, или вы можете вручную задать RigidBody3D.Inertia.
| Имя | Тип | По умолчанию |
|---|---|---|
torque | Vector3 | — |
ApplyTorqueImpulsevoid
public void ApplyTorqueImpulse(Vector3 impulse);Применяет вращательный импульс к телу, не влияя на положение.
Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_force").
Примечание: для работы требуется RigidBody3D.Inertia. Чтобы иметь RigidBody3D.Inertia, активный CollisionShape3D должен быть дочерним элементом узла, или вы можете вручную задать RigidBody3D.Inertia.
| Имя | Тип | По умолчанию |
|---|---|---|
impulse | Vector3 | — |
GetAngularDampfloat
public float GetAngularDamp();floatGetAngularDampModeRigidBody3D.DampMode
public RigidBody3D.DampMode GetAngularDampMode();RigidBody3D.DampModeGetAngularVelocityVector3
public Vector3 GetAngularVelocity();Vector3GetCenterOfMassVector3
public Vector3 GetCenterOfMass();Vector3GetCenterOfMassModeRigidBody3D.CenterOfMassModeEnum
public RigidBody3D.CenterOfMassModeEnum GetCenterOfMassMode();RigidBody3D.CenterOfMassModeEnumGetCollidingBodiesReckfell.Collections.Array<Entity3D>
public Reckfell.Collections.Array<Entity3D> GetCollidingBodies();Возвращает список тел, сталкивающихся с этим. Требуется, чтобы RigidBody3D.ContactMonitor был установлен на true, а RigidBody3D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений.
Примечание: Результат этого теста не появляется сразу после перемещения объектов. Для повышения производительности список столкновений обновляется один раз за кадр и перед шагом физики. Рассмотрите возможность использования сигналов вместо этого.
Reckfell.Collections.Array<Entity3D>GetConstantForceVector3
public Vector3 GetConstantForce();Vector3GetConstantTorqueVector3
public Vector3 GetConstantTorque();Vector3GetContactCountint
public int GetContactCount();Возвращает количество контактов этого тела с другими телами. По умолчанию возвращается 0, если тела не настроены на отслеживание контактов (см. RigidBody3D.ContactMonitor).
Примечание: Чтобы получить сталкивающиеся тела, используйте RigidBody3D.GetCollidingBodies.
intGetFreezeModeRigidBody3D.FreezeModeEnum
public RigidBody3D.FreezeModeEnum GetFreezeMode();RigidBody3D.FreezeModeEnumGetGravityScalefloat
public float GetGravityScale();floatGetInertiaVector3
public Vector3 GetInertia();Vector3GetInverseInertiaTensorBasis
public Basis GetInverseInertiaTensor();Возвращает обратный базис тензора инерции. Используется для расчета углового ускорения, возникающего в результате крутящего момента, приложенного к RigidBody3D.
BasisGetLinearDampfloat
public float GetLinearDamp();floatGetLinearDampModeRigidBody3D.DampMode
public RigidBody3D.DampMode GetLinearDampMode();RigidBody3D.DampModeGetLinearVelocityVector3
public Vector3 GetLinearVelocity();Vector3GetMassfloat
public float GetMass();floatGetMaxContactsReportedint
public int GetMaxContactsReported();intGetPhysicsMaterialOverridePhysicsMaterial
public PhysicsMaterial GetPhysicsMaterialOverride();PhysicsMaterialGetVelocityAtLocalPositionVector3
public Vector3 GetVelocityAtLocalPosition(Vector3 localPosition);Возвращает скорость тела в указанном относительном положении.
local_position - зачет от происхождения тела в глобальных координатах.
См. также RigidBody3D.GetVelocityAtPosition.
| Имя | Тип | По умолчанию |
|---|---|---|
localPosition | Vector3 | — |
Vector3GetVelocityAtPositionVector3
public Vector3 GetVelocityAtPosition(Vector3 globalPoint);Возвращает скорость тела в заданном глобальном положении.
Это эквивалентно get_velocity_at_local_position(global_point - global_position).
См. также RigidBody3D.GetVelocityAtLocalPosition.
| Имя | Тип | По умолчанию |
|---|---|---|
globalPoint | Vector3 | — |
Vector3IsAbleToSleepbool
public bool IsAbleToSleep();boolIsContactMonitorEnabledbool
public bool IsContactMonitorEnabled();boolIsFreezeEnabledbool
public bool IsFreezeEnabled();boolIsLockRotationEnabledbool
public bool IsLockRotationEnabled();boolIsSleepingbool
public bool IsSleeping();boolIsUsingContinuousCollisionDetectionbool
public bool IsUsingContinuousCollisionDetection();boolIsUsingCustomIntegratorbool
public bool IsUsingCustomIntegrator();boolSetAngularDampvoid
public void SetAngularDamp(float angularDamp);| Имя | Тип | По умолчанию |
|---|---|---|
angularDamp | float | — |
SetAngularDampModevoid
public void SetAngularDampMode(RigidBody3D.DampMode angularDampMode);| Имя | Тип | По умолчанию |
|---|---|---|
angularDampMode | RigidBody3D.DampMode | — |
SetAngularVelocityvoid
public void SetAngularVelocity(Vector3 angularVelocity);| Имя | Тип | По умолчанию |
|---|---|---|
angularVelocity | Vector3 | — |
SetAxisVelocityvoid
public void SetAxisVelocity(Vector3 axisVelocity);Устанавливает скорость оси. Скорость в данной векторной оси будет установлена как заданная длина вектора. Это полезно для поведения прыжка.
| Имя | Тип | По умолчанию |
|---|---|---|
axisVelocity | Vector3 | — |
SetCanSleepvoid
public void SetCanSleep(bool ableToSleep);| Имя | Тип | По умолчанию |
|---|---|---|
ableToSleep | bool | — |
SetCenterOfMassvoid
public void SetCenterOfMass(Vector3 centerOfMass);| Имя | Тип | По умолчанию |
|---|---|---|
centerOfMass | Vector3 | — |
SetCenterOfMassModevoid
public void SetCenterOfMassMode(RigidBody3D.CenterOfMassModeEnum mode);| Имя | Тип | По умолчанию |
|---|---|---|
mode | RigidBody3D.CenterOfMassModeEnum | — |
SetConstantForcevoid
public void SetConstantForce(Vector3 force);| Имя | Тип | По умолчанию |
|---|---|---|
force | Vector3 | — |
SetConstantTorquevoid
public void SetConstantTorque(Vector3 torque);| Имя | Тип | По умолчанию |
|---|---|---|
torque | Vector3 | — |
SetContactMonitorvoid
public void SetContactMonitor(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetFreezeEnabledvoid
public void SetFreezeEnabled(bool freezeMode);| Имя | Тип | По умолчанию |
|---|---|---|
freezeMode | bool | — |
SetFreezeModevoid
public void SetFreezeMode(RigidBody3D.FreezeModeEnum freezeMode);| Имя | Тип | По умолчанию |
|---|---|---|
freezeMode | RigidBody3D.FreezeModeEnum | — |
SetGravityScalevoid
public void SetGravityScale(float gravityScale);| Имя | Тип | По умолчанию |
|---|---|---|
gravityScale | float | — |
SetInertiavoid
public void SetInertia(Vector3 inertia);| Имя | Тип | По умолчанию |
|---|---|---|
inertia | Vector3 | — |
SetLinearDampvoid
public void SetLinearDamp(float linearDamp);| Имя | Тип | По умолчанию |
|---|---|---|
linearDamp | float | — |
SetLinearDampModevoid
public void SetLinearDampMode(RigidBody3D.DampMode linearDampMode);| Имя | Тип | По умолчанию |
|---|---|---|
linearDampMode | RigidBody3D.DampMode | — |
SetLinearVelocityvoid
public void SetLinearVelocity(Vector3 linearVelocity);| Имя | Тип | По умолчанию |
|---|---|---|
linearVelocity | Vector3 | — |
SetLockRotationEnabledvoid
public void SetLockRotationEnabled(bool lockRotation);| Имя | Тип | По умолчанию |
|---|---|---|
lockRotation | bool | — |
SetMassvoid
public void SetMass(float mass);| Имя | Тип | По умолчанию |
|---|---|---|
mass | float | — |
SetMaxContactsReportedvoid
public void SetMaxContactsReported(int amount);| Имя | Тип | По умолчанию |
|---|---|---|
amount | int | — |
SetPhysicsMaterialOverridevoid
public void SetPhysicsMaterialOverride(PhysicsMaterial physicsMaterialOverride);| Имя | Тип | По умолчанию |
|---|---|---|
physicsMaterialOverride | PhysicsMaterial | — |
SetSleepingvoid
public void SetSleeping(bool sleeping);| Имя | Тип | По умолчанию |
|---|---|---|
sleeping | bool | — |
SetUseContinuousCollisionDetectionvoid
public void SetUseContinuousCollisionDetection(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetUseCustomIntegratorvoid
public void SetUseCustomIntegrator(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
_IntegrateForcesvoid
public virtual void _IntegrateForces(PhysicsDirectBodyState3D state);Физический callback для контролируемой работы с состоянием. При телепорте меняйте state.Transform и явно обнуляйте нужные скорости. Не используйте частую запись Position в _Process вместо интегратора.
| Имя | Тип | По умолчанию |
|---|---|---|
state | PhysicsDirectBodyState3D | — |
Сигналы и события5
BodyEnteredСобытие
public event RigidBody3D.BodyEnteredEventHandler BodyEntered;Вызывается при столкновении с другим PhysicsBody3D или GridMap. Требуется, чтобы RigidBody3D.ContactMonitor был установлен на true, а RigidBody3D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений. GridMap обнаруживаются, если MeshLibrary имеет Collision Shape3D.
body Entity, если он существует в дереве, другого PhysicsBody3D или GridMap.
| Имя | Тип | По умолчанию |
|---|---|---|
body | Entity | — |
BodyExitedСобытие
public event RigidBody3D.BodyExitedEventHandler BodyExited;Выдается, когда заканчивается столкновение с другим PhysicsBody3D или GridMap. Требует, чтобы RigidBody3D.ContactMonitor был установлен на true, а RigidBody3D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений. GridMap обнаруживаются, если MeshLibrary имеет Collision Shape3D.
body Entity, если он существует в дереве, другого PhysicsBody3D или GridMap.
| Имя | Тип | По умолчанию |
|---|---|---|
body | Entity | — |
BodyShapeEnteredСобытие
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)).
| Имя | Тип | По умолчанию |
|---|---|---|
bodyRid | Rid | — |
body | Entity | — |
bodyShapeIndex | long | — |
localShapeIndex | long | — |
BodyShapeExitedСобытие
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)).
| Имя | Тип | По умолчанию |
|---|---|---|
bodyRid | Rid | — |
body | Entity | — |
bodyShapeIndex | long | — |
localShapeIndex | long | — |
SleepingStateChangedСобытие
public event Action SleepingStateChanged;Выдается, когда физический движок изменяет состояние сна тела.
Примечание: Изменение значения RigidBody3D.Sleeping не вызовет этот сигнал. Он выдается только в том случае, если состояние сна изменено физическим движком или используется emit_signal("sleeping_state_changed").
RigidBody3D.CenterOfMassModeEnum
| Значение | Описание |
|---|---|
Auto = 0 | В этом режиме центр масс тела вычисляется автоматически на основе его форм. Это предполагает, что начало форм также является их центром масс. |
Custom = 1 | В этом режиме центр масс тела задается через |
RigidBody3D.DampMode
| Значение | Описание |
|---|---|
Combine = 0 | В этом режиме значение демпфирования тела добавляется к любому значению, заданному в областях, или к значению по умолчанию. |
Replace = 1 | В этом режиме значение демпфирования тела заменяет любое значение, заданное в областях, или значение по умолчанию. |
RigidBody3D.FreezeModeEnum
| Значение | Описание |
|---|---|
Kinematic = 1 | Режим кинематической заморозки тела. Похож на |
Static = 0 | Режим статической заморозки тела (по умолчанию). Тело не подвержено влиянию гравитации и сил. Его можно перемещать только с помощью пользовательского кода, и оно не сталкивается с другими телами на своем пути. |