RigidBody2D
Динамическое тело 2D, управляемое силами и контактами.
RigidBody2D получает движение от физического интегратора. Используйте силы для тяги, импульсы для разового толчка. Непрерывная запись Position/Rotation в _Process конкурирует с симуляцией. Для контролируемого сброса передайте запрос в _IntegrateForces и меняйте PhysicsDirectBodyState.
BodyEntered требует ContactMonitor и положительного MaxContactsReported. Sleeping, Freeze и Disabled формы имеют разные значения. CustomIntegrator отключает обычную интеграцию сил, но не все контакты. Пример проверяет падение, импульс, сброс и заморозку; он не подтверждает любую стопку/скорость/платформу.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
RigidBody2DКонструктор
public RigidBody2D();Свойства23
AngularDampСвойство
public float AngularDamp { get; set; }Демпфирует вращение тела. По умолчанию тело будет использовать настройку ProjectSettings.physics/2d/default_angular_damp или любое переопределение значения, заданное Area2D, в котором находится тело. В зависимости от RigidBody2D.AngularDampMode вы можете задать RigidBody2D.AngularDamp для добавления или замены значения демпфирования тела.
Подробнее о демпфировании см. в ProjectSettings.physics/2d/default_angular_damp.
AngularDampModeСвойство
public RigidBody2D.DampMode AngularDampMode { get; set; }Определяет, как применяется RigidBody2D.AngularDamp.
AngularVelocityСвойство
public float AngularVelocity { get; set; }Скорость вращения тела в радианах в секунду.
CanSleepСвойство
public bool CanSleep { get; set; }Если true, тело может войти в режим сна при отсутствии движения. RigidBody2D.Sleeping.
CenterOfMassСвойство
public Vector2 CenterOfMass { get; set; }Центр масс тела, определяемый пользователем, относительно исходного положения тела, когда RigidBody2D.CenterOfMassMode имеет значение RigidBody2D.CenterOfMassModeEnum.Custom. Это точка равновесия тела, в которой приложенные силы вызывают только линейное ускорение. Приложение сил вне центра масс вызывает угловое ускорение.
Когда RigidBody2D.CenterOfMassMode имеет значение RigidBody2D.CenterOfMassModeEnum.Auto (значение по умолчанию), центр масс определяется автоматически, но это не приводит к обновлению значения RigidBody2D.CenterOfMass.
CenterOfMassModeСвойство
public RigidBody2D.CenterOfMassModeEnum CenterOfMassMode { get; set; }Определяет способ установки центра массы тела.
ConstantForceСвойство
public Vector2 ConstantForce { get; set; }Общие постоянные позиционные силы тела, применяемые во время каждого обновления физики.
См. RigidBody2D.AddConstantForce и RigidBody2D.AddConstantCentralForce.
ConstantTorqueСвойство
public float ConstantTorque { get; set; }Общие постоянные вращательные силы тела, применяемые во время каждого обновления физики.
См. RigidBody2D.AddConstantTorque.
ContactMonitorСвойство
public bool ContactMonitor { get; set; }Включает наблюдение за контактами тела. Для сигналов также нужен MaxContactsReported > 0 и реальный контакт подходящих форм; это не обнаружение произвольного визуального пересечения.
ContinuousCdСвойство
public RigidBody2D.CcdMode ContinuousCd { get; set; }Режим непрерывного обнаружения столкновений. Непрерывное обнаружение столкновений пытается предсказать, где движущееся тело столкнется, вместо того, чтобы перемещать его и корректировать его движение после столкновения. Непрерывное обнаружение столкновений медленнее, но точнее и пропускает меньше столкновений с небольшими, быстро движущимися объектами. Доступны методы Raycasting и Shapecasting.
CustomIntegratorСвойство
public bool CustomIntegrator { get; set; }Если true, стандартная интеграция силы (например, гравитация или демпфирование) будет отключена для этого тела. За исключением реакции на столкновение, тело будет двигаться только так, как определено методом RigidBody2D._IntegrateForces, если этот виртуальный метод переопределен.
Установка этого свойства вызовет метод PhysicsServer2D.BodySetOmitForceIntegration внутренне.
FreezeСвойство
public bool Freeze { get; set; }Переключает тело из обычной динамической симуляции в режим, выбранный FreezeMode. В выполненной проверке замороженное тело не смещалось после импульса. Не обещает автоматического обнуления сохранённой скорости или сброса позиции.
FreezeModeСвойство
public RigidBody2D.FreezeModeEnum FreezeMode { get; set; }Режим заморозки тела. Определяет поведение тела, когда RigidBody2D.Freeze имеет значение true.
Примечание: Для тела, которое всегда заморожено, используйте StaticBody2D или AnimatableBody2D вместо этого.
GravityScaleСвойство
public float GravityScale { get; set; }Умножает силу тяжести, приложенную к телу. Сила тяжести тела рассчитывается на основе настройки проекта ProjectSettings.physics/2d/default_gravity и/или любого дополнительного вектора силы тяжести, примененных Area2D-ов.
InertiaСвойство
public float Inertia { get; set; }Момент инерции тела. Это похоже на массу, но для вращения: он определяет, какой крутящий момент требуется для вращения тела. Момент инерции обычно вычисляется автоматически из массы и форм, но это свойство позволяет вам задать пользовательское значение.
Если установлено значение 0, инерция вычисляется автоматически (значение по умолчанию).
Примечание: Это значение не изменяется при автоматическом вычислении инерции. Используйте PhysicsServer2D, чтобы получить вычисленную инерцию.
private RigidBody2D _ball;
public override void _Ready()
{
_ball = GetEntity<RigidBody2D>("Ball");
}
private float GetBallInertia()
{
return 1.0f / PhysicsServer2D.BodyGetDirectState(_ball.GetRid()).InverseInertia;
}LinearDampСвойство
public float LinearDamp { get; set; }Демпфирует движение тела. По умолчанию тело будет использовать настройку ProjectSettings.physics/2d/default_linear_damp или любое переопределение значения, заданное Area2D, в котором находится тело. В зависимости от RigidBody2D.LinearDampMode вы можете задать RigidBody2D.LinearDamp для добавления или замены значения демпфирования тела.
Подробнее о демпфировании см. в ProjectSettings.physics/2d/default_linear_damp.
LinearDampModeСвойство
public RigidBody2D.DampMode LinearDampMode { get; set; }Определяет, как применяется RigidBody2D.LinearDamp.
LinearVelocityСвойство
public Vector2 LinearVelocity { get; set; }Линейная скорость тела в пикселях в секунду. Может использоваться спорадически, но не устанавливайте это в каждом кадре, потому что физика может работать в другом потоке и работать с другой гранулярностью. Используйте RigidBody2D._IntegrateForces в качестве цикла процесса для точного управления состоянием тела.
LockRotationСвойство
public bool LockRotation { get; set; }Если true, тело не может вращаться. Гравитация и силы применяют только линейное движение.
MassСвойство
public float Mass { get; set; }Положительная масса тела. Одинаковый импульс меняет скорость тем меньше, чем больше масса. Значения не больше нуля отклоняются; не используйте массу 0 для создания неподвижного тела.
MaxContactsReportedСвойство
public int MaxContactsReported { get; set; }Максимальное количество контактов, которые будут записаны. Требуется значение больше 0 и RigidBody2D.ContactMonitor для установки в true для начала регистрации контактов. Используйте RigidBody2D.GetContactCount для получения количества или RigidBody2D.GetCollidingBodies для получения тел, с которыми произошло столкновение.
Примечание: Количество контактов отличается от количества столкновений. Столкновения между параллельными ребрами приведут к двум контактам (по одному на каждом конце), а столкновения между параллельными гранями приведут к четырем контактам (по одному на каждом углу).
PhysicsMaterialOverrideСвойство
public PhysicsMaterial PhysicsMaterialOverride { get; set; }Переопределение физического материала для тела. Если материал назначен этому свойству, он будет использоваться вместо любого другого физического материала, например унаследованного.
SleepingСвойство
public bool Sleeping { get; set; }Если true, тело не будет двигаться и не будет вычислять силы, пока не будет разбужено другим телом, например, посредством столкновения или с помощью методов RigidBody2D.ApplyImpulse или RigidBody2D.ApplyForce.
Методы61
AddConstantCentralForcevoid
public void AddConstantCentralForce(Vector2 force);Добавляет постоянную направленную силу, не влияя на вращение, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_force = Vector2(0, 0).
Это эквивалентно использованию RigidBody2D.AddConstantForce в центре масс тела.
| Имя | Тип | По умолчанию |
|---|---|---|
force | Vector2 | — |
AddConstantForcevoid
public void AddConstantForce(Vector2 force, Vector2? position = default);Добавляет к телу постоянную позиционную силу, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_force = Vector2(0, 0).
position — это смещение от начала координат тела в глобальных координатах.
| Имя | Тип | По умолчанию |
|---|---|---|
force | Vector2 | — |
position | Vector2? | default |
positionЕсли параметр не имеет значения, то значение по умолчанию: new Vector2(0.0f, 0.0f).
AddConstantTorquevoid
public void AddConstantTorque(float torque);Добавляет постоянную вращательную силу, не влияя на положение, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_torque = 0.
| Имя | Тип | По умолчанию |
|---|---|---|
torque | float | — |
ApplyCentralForcevoid
public void ApplyCentralForce(Vector2 force);Добавляет центральную силу на текущий физический шаг. Для тяги вызывайте в каждом нужном шаге; интегратор сам учитывает время. Это не постоянная сила, сохраняющаяся после единственного вызова.
| Имя | Тип | По умолчанию |
|---|---|---|
force | Vector2 | — |
forceВектор силы в глобальных осях; не смещение и не сила, предварительно умноженная на delta.
ApplyCentralImpulsevoid
public void ApplyCentralImpulse(Vector2? impulse = default);Прикладывает одноразовый центральный импульс. Не умножайте на delta и не повторяйте каждый кадр для постоянной тяги. В проверке импульс 20 по X при массе 2 дал скорость 10 без гравитации и затухания.
| Имя | Тип | По умолчанию |
|---|---|---|
impulse | Vector2? | default |
impulseВектор импульса в глобальных осях. Пропущенное необязательное значение даёт нулевой вектор.
ApplyForcevoid
public void ApplyForce(Vector2 force, Vector2? position = default);Применяет позиционированную силу к телу. Сила зависит от времени и должна применяться при каждом обновлении физики.
position — это смещение от начала координат тела в глобальных координатах.
| Имя | Тип | По умолчанию |
|---|---|---|
force | Vector2 | — |
position | Vector2? | default |
positionЕсли параметр не имеет значения, то значение по умолчанию: new Vector2(0.0f, 0.0f).
ApplyImpulsevoid
public void ApplyImpulse(Vector2 impulse, Vector2? position = default);Применяет позиционированный импульс к телу.
Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_force").
position — это смещение от начала координат тела в глобальных координатах.
| Имя | Тип | По умолчанию |
|---|---|---|
impulse | Vector2 | — |
position | Vector2? | default |
positionЕсли параметр не имеет значения, то значение по умолчанию: new Vector2(0.0f, 0.0f).
ApplyTorquevoid
public void ApplyTorque(float torque);Применяет вращательную силу, не влияя на положение. Сила зависит от времени и должна применяться при каждом обновлении физики.
Примечание: для работы требуется RigidBody2D.Inertia. Чтобы иметь RigidBody2D.Inertia, активный CollisionShape2D должен быть дочерним элементом узла, или вы можете вручную задать RigidBody2D.Inertia.
| Имя | Тип | По умолчанию |
|---|---|---|
torque | float | — |
ApplyTorqueImpulsevoid
public void ApplyTorqueImpulse(float torque);Применяет вращательный импульс к телу, не влияя на положение.
Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_force").
Примечание: для работы требуется RigidBody2D.Inertia. Чтобы иметь RigidBody2D.Inertia, активный CollisionShape2D должен быть дочерним элементом узла, или вы можете вручную задать RigidBody2D.Inertia.
| Имя | Тип | По умолчанию |
|---|---|---|
torque | float | — |
GetAngularDampfloat
public float GetAngularDamp();floatGetAngularDampModeRigidBody2D.DampMode
public RigidBody2D.DampMode GetAngularDampMode();RigidBody2D.DampModeGetAngularVelocityfloat
public float GetAngularVelocity();floatGetCenterOfMassVector2
public Vector2 GetCenterOfMass();Vector2GetCenterOfMassModeRigidBody2D.CenterOfMassModeEnum
public RigidBody2D.CenterOfMassModeEnum GetCenterOfMassMode();RigidBody2D.CenterOfMassModeEnumGetCollidingBodiesReckfell.Collections.Array<Entity2D>
public Reckfell.Collections.Array<Entity2D> GetCollidingBodies();Возвращает список тел, сталкивающихся с этим. Требуется, чтобы RigidBody2D.ContactMonitor был установлен на true, а RigidBody2D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений.
Примечание: Результат этого теста не появляется сразу после перемещения объектов. Для повышения производительности список столкновений обновляется один раз за кадр и перед шагом физики. Рассмотрите возможность использования сигналов вместо этого.
Reckfell.Collections.Array<Entity2D>GetConstantForceVector2
public Vector2 GetConstantForce();Vector2GetConstantTorquefloat
public float GetConstantTorque();floatGetContactCountint
public int GetContactCount();Возвращает количество контактов этого тела с другими телами. По умолчанию возвращается 0, если тела не настроены на отслеживание контактов (см. RigidBody2D.ContactMonitor).
Примечание: Чтобы получить сталкивающиеся тела, используйте RigidBody2D.GetCollidingBodies.
intGetContinuousCollisionDetectionModeRigidBody2D.CcdMode
public RigidBody2D.CcdMode GetContinuousCollisionDetectionMode();RigidBody2D.CcdModeGetFreezeModeRigidBody2D.FreezeModeEnum
public RigidBody2D.FreezeModeEnum GetFreezeMode();RigidBody2D.FreezeModeEnumGetGravityScalefloat
public float GetGravityScale();floatGetInertiafloat
public float GetInertia();floatGetLinearDampfloat
public float GetLinearDamp();floatGetLinearDampModeRigidBody2D.DampMode
public RigidBody2D.DampMode GetLinearDampMode();RigidBody2D.DampModeGetLinearVelocityVector2
public Vector2 GetLinearVelocity();Vector2GetMassfloat
public float GetMass();floatGetMaxContactsReportedint
public int GetMaxContactsReported();intGetPhysicsMaterialOverridePhysicsMaterial
public PhysicsMaterial GetPhysicsMaterialOverride();PhysicsMaterialGetVelocityAtLocalPositionVector2
public Vector2 GetVelocityAtLocalPosition(Vector2 localPosition);Возвращает скорость тела в указанном относительном положении.
local_position - зачет от происхождения тела в глобальных координатах.
См. также RigidBody2D.GetVelocityAtPosition.
| Имя | Тип | По умолчанию |
|---|---|---|
localPosition | Vector2 | — |
Vector2GetVelocityAtPositionVector2
public Vector2 GetVelocityAtPosition(Vector2 globalPoint);Возвращает скорость тела в заданном глобальном положении.
Это эквивалентно get_velocity_at_local_position(global_point - global_position).
См. также RigidBody2D.GetVelocityAtLocalPosition.
| Имя | Тип | По умолчанию |
|---|---|---|
globalPoint | Vector2 | — |
Vector2IsAbleToSleepbool
public bool IsAbleToSleep();boolIsContactMonitorEnabledbool
public bool IsContactMonitorEnabled();boolIsFreezeEnabledbool
public bool IsFreezeEnabled();boolIsLockRotationEnabledbool
public bool IsLockRotationEnabled();boolIsSleepingbool
public bool IsSleeping();boolIsUsingCustomIntegratorbool
public bool IsUsingCustomIntegrator();boolSetAngularDampvoid
public void SetAngularDamp(float angularDamp);| Имя | Тип | По умолчанию |
|---|---|---|
angularDamp | float | — |
SetAngularDampModevoid
public void SetAngularDampMode(RigidBody2D.DampMode angularDampMode);| Имя | Тип | По умолчанию |
|---|---|---|
angularDampMode | RigidBody2D.DampMode | — |
SetAngularVelocityvoid
public void SetAngularVelocity(float angularVelocity);| Имя | Тип | По умолчанию |
|---|---|---|
angularVelocity | float | — |
SetAxisVelocityvoid
public void SetAxisVelocity(Vector2 axisVelocity);Устанавливает скорость тела по заданной оси. Скорость по заданной векторной оси будет установлена как заданная длина вектора. Это полезно для прыжкового поведения.
| Имя | Тип | По умолчанию |
|---|---|---|
axisVelocity | Vector2 | — |
SetCanSleepvoid
public void SetCanSleep(bool ableToSleep);| Имя | Тип | По умолчанию |
|---|---|---|
ableToSleep | bool | — |
SetCenterOfMassvoid
public void SetCenterOfMass(Vector2 centerOfMass);| Имя | Тип | По умолчанию |
|---|---|---|
centerOfMass | Vector2 | — |
SetCenterOfMassModevoid
public void SetCenterOfMassMode(RigidBody2D.CenterOfMassModeEnum mode);| Имя | Тип | По умолчанию |
|---|---|---|
mode | RigidBody2D.CenterOfMassModeEnum | — |
SetConstantForcevoid
public void SetConstantForce(Vector2 force);| Имя | Тип | По умолчанию |
|---|---|---|
force | Vector2 | — |
SetConstantTorquevoid
public void SetConstantTorque(float torque);| Имя | Тип | По умолчанию |
|---|---|---|
torque | float | — |
SetContactMonitorvoid
public void SetContactMonitor(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetContinuousCollisionDetectionModevoid
public void SetContinuousCollisionDetectionMode(RigidBody2D.CcdMode mode);| Имя | Тип | По умолчанию |
|---|---|---|
mode | RigidBody2D.CcdMode | — |
SetFreezeEnabledvoid
public void SetFreezeEnabled(bool freezeMode);| Имя | Тип | По умолчанию |
|---|---|---|
freezeMode | bool | — |
SetFreezeModevoid
public void SetFreezeMode(RigidBody2D.FreezeModeEnum freezeMode);| Имя | Тип | По умолчанию |
|---|---|---|
freezeMode | RigidBody2D.FreezeModeEnum | — |
SetGravityScalevoid
public void SetGravityScale(float gravityScale);| Имя | Тип | По умолчанию |
|---|---|---|
gravityScale | float | — |
SetInertiavoid
public void SetInertia(float inertia);| Имя | Тип | По умолчанию |
|---|---|---|
inertia | float | — |
SetLinearDampvoid
public void SetLinearDamp(float linearDamp);| Имя | Тип | По умолчанию |
|---|---|---|
linearDamp | float | — |
SetLinearDampModevoid
public void SetLinearDampMode(RigidBody2D.DampMode linearDampMode);| Имя | Тип | По умолчанию |
|---|---|---|
linearDampMode | RigidBody2D.DampMode | — |
SetLinearVelocityvoid
public void SetLinearVelocity(Vector2 linearVelocity);| Имя | Тип | По умолчанию |
|---|---|---|
linearVelocity | Vector2 | — |
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 | — |
SetUseCustomIntegratorvoid
public void SetUseCustomIntegrator(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
_IntegrateForcesvoid
public virtual void _IntegrateForces(PhysicsDirectBodyState2D state);Физический callback для контролируемой работы с состоянием. При телепорте меняйте state.Transform и явно обнуляйте нужные скорости. Не используйте частую запись Position в _Process вместо интегратора.
| Имя | Тип | По умолчанию |
|---|---|---|
state | PhysicsDirectBodyState2D | — |
Сигналы и события5
BodyEnteredСобытие
public event RigidBody2D.BodyEnteredEventHandler BodyEntered;Вызывается при столкновении с другим PhysicsBody2D или TileMap. Требует, чтобы RigidBody2D.ContactMonitor был установлен на true, а RigidBody2D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений. TileMap-ы обнаруживаются, если TileSet имеет Столкновение Shape2D-ов.
body Entity, если он существует в дереве, другого PhysicsBody2D или TileMap.
| Имя | Тип | По умолчанию |
|---|---|---|
body | Entity | — |
BodyExitedСобытие
public event RigidBody2D.BodyExitedEventHandler BodyExited;Вызывается, когда заканчивается столкновение с другим PhysicsBody2D или TileMap. Требует, чтобы RigidBody2D.ContactMonitor был установлен на true, а RigidBody2D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений. TileMap обнаруживаются, если TileSet имеет Столкновение Shape2D-ов.
body Entity, если он существует в дереве, другого PhysicsBody2D или TileMap.
| Имя | Тип | По умолчанию |
|---|---|---|
body | Entity | — |
BodyShapeEnteredСобытие
public event RigidBody2D.BodyShapeEnteredEventHandler BodyShapeEntered;Вызывается, когда один из Shape2D-ов этого RigidBody2D сталкивается с Shape2D-ами другого PhysicsBody2D или TileMap. Требует, чтобы RigidBody2D.ContactMonitor был установлен на true, а RigidBody2D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений. TileMap-ы обнаруживаются, если TileSet имеет Столкновение Shape2D-ов.
body_rid Rid другого PhysicsBody2D или TileSet CollisionObject2D, используемого PhysicsServer2D.
body Entity, если он существует в дереве, другого PhysicsBody2D или TileMap.
body_shape_index индекс Shape2D другого PhysicsBody2D или TileMap, используемого PhysicsServer2D. Получите узел CollisionShape2D с помощью body.shape_owner_get_owner(body.shape_find_owner(body_shape_index)).
local_shape_index индекс Shape2D этого RigidBody2D, используемый PhysicsServer2D. Получите узел CollisionShape2D с помощью self.shape_owner_get_owner(self.shape_find_owner(local_shape_index)).
| Имя | Тип | По умолчанию |
|---|---|---|
bodyRid | Rid | — |
body | Entity | — |
bodyShapeIndex | long | — |
localShapeIndex | long | — |
BodyShapeExitedСобытие
public event RigidBody2D.BodyShapeExitedEventHandler BodyShapeExited;Вызывается, когда заканчивается столкновение между одним из Shape2D-ов этого RigidBody2D и другим PhysicsBody2D или TileMap Shape2D-ов. Требует, чтобы RigidBody2D.ContactMonitor был установлен на true, а RigidBody2D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений. TileMap обнаруживаются, если TileSet имеет Collision Shape2D-ов.
body_rid Rid другого PhysicsBody2D или TileSet CollisionObject2D, используемого PhysicsServer2D.
body Entity, если он существует в дереве, другого PhysicsBody2D или TileMap.
body_shape_index индекс Shape2D другого PhysicsBody2D или TileMap, используемого PhysicsServer2D. Получите узел CollisionShape2D с помощью body.shape_owner_get_owner(body.shape_find_owner(body_shape_index)).
local_shape_index индекс Shape2D этого RigidBody2D, используемого PhysicsServer2D. Получите узел CollisionShape2D с помощью 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;Выдается, когда физический движок изменяет состояние сна тела.
Примечание: Изменение значения RigidBody2D.Sleeping не вызовет этот сигнал. Он выдается только в том случае, если состояние сна изменено физическим движком или используется emit_signal("sleeping_state_changed").
RigidBody2D.CcdMode
| Значение | Описание |
|---|---|
CastRay = 1 | Непрерывное обнаружение столкновений включено с помощью raycasting. Это быстрее, чем shapecasting, но менее точно. |
CastShape = 2 | Непрерывное обнаружение столкновений, включенное с помощью shapecasting. Это самый медленный метод CCD и самый точный. |
Disabled = 0 | Непрерывное обнаружение столкновений отключено. Это самый быстрый способ обнаружения столкновений тел, но он может пропускать мелкие быстро движущиеся объекты. |
RigidBody2D.CenterOfMassModeEnum
| Значение | Описание |
|---|---|
Auto = 0 | В этом режиме центр масс тела вычисляется автоматически на основе его форм. Это предполагает, что начало форм также является их центром масс. |
Custom = 1 | В этом режиме центр масс тела задается через |
RigidBody2D.DampMode
| Значение | Описание |
|---|---|
Combine = 0 | В этом режиме значение демпфирования тела добавляется к любому значению, заданному в областях, или к значению по умолчанию. |
Replace = 1 | В этом режиме значение демпфирования тела заменяет любое значение, заданное в областях, или значение по умолчанию. |
RigidBody2D.FreezeModeEnum
| Значение | Описание |
|---|---|
Kinematic = 1 | Режим кинематической заморозки тела. Похож на |
Static = 0 | Режим статической заморозки тела (по умолчанию). Тело не подвержено влиянию гравитации и сил. Его можно перемещать только с помощью пользовательского кода, и оно не сталкивается с другими телами на своем пути. |