reckfellENGINE

RigidBody2D

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

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

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

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

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

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

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

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

Свойства23

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ContinuousCdСвойство
# ContinuousCd
C#
public RigidBody2D.CcdMode ContinuousCd { get; set; }

Режим непрерывного обнаружения столкновений. Непрерывное обнаружение столкновений пытается предсказать, где движущееся тело столкнется, вместо того, чтобы перемещать его и корректировать его движение после столкновения. Непрерывное обнаружение столкновений медленнее, но точнее и пропускает меньше столкновений с небольшими, быстро движущимися объектами. Доступны методы Raycasting и Shapecasting.

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

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

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

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

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

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

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

Умножает силу тяжести, приложенную к телу. Сила тяжести тела рассчитывается на основе настройки проекта ProjectSettings.physics/2d/default_gravity и/или любого дополнительного вектора силы тяжести, примененных Area2D-ов.

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

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

C#
private RigidBody2D _ball;

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

private float GetBallInertia()
{
    return 1.0f / PhysicsServer2D.BodyGetDirectState(_ball.GetRid()).InverseInertia;
}
LinearDampСвойство
# LinearDamp
C#
public float LinearDamp { get; set; }

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

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

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

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

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

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

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

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

Положительная масса тела. Одинаковый импульс меняет скорость тем меньше, чем больше масса. Значения не больше нуля отклоняются; не используйте массу 0 для создания неподвижного тела.

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

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

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

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

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

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

Методы61

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

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

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

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

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

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

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

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

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

Добавляет центральную силу на текущий физический шаг. Для тяги вызывайте в каждом нужном шаге; интегратор сам учитывает время. Это не постоянная сила, сохраняющаяся после единственного вызова.

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

Вектор силы в глобальных осях; не смещение и не сила, предварительно умноженная на delta.

ApplyCentralImpulsevoid
# ApplyCentralImpulse
C#
public void ApplyCentralImpulse(Vector2? impulse = default);

Прикладывает одноразовый центральный импульс. Не умножайте на delta и не повторяйте каждый кадр для постоянной тяги. В проверке импульс 20 по X при массе 2 дал скорость 10 без гравитации и затухания.

Параметры
ИмяТипПо умолчанию
impulseVector2?default
impulse

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

ApplyForcevoid
# ApplyForce
C#
public void ApplyForce(Vector2 force, Vector2? position = default);

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

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

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

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

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

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

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

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

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

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

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

Параметры
ИмяТипПо умолчанию
torquefloat—
GetAngularDampfloat
# GetAngularDamp
C#
public float GetAngularDamp();
Возвращает float
GetAngularDampModeRigidBody2D.DampMode
# GetAngularDampMode
C#
public RigidBody2D.DampMode GetAngularDampMode();
Возвращает RigidBody2D.DampMode
GetAngularVelocityfloat
# GetAngularVelocity
C#
public float GetAngularVelocity();
Возвращает float
GetCenterOfMassVector2
# GetCenterOfMass
C#
public Vector2 GetCenterOfMass();
Возвращает Vector2
GetCenterOfMassModeRigidBody2D.CenterOfMassModeEnum
# GetCenterOfMassMode
C#
public RigidBody2D.CenterOfMassModeEnum GetCenterOfMassMode();
Возвращает RigidBody2D.CenterOfMassModeEnum
GetCollidingBodiesReckfell.Collections.Array<Entity2D>
# GetCollidingBodies
C#
public Reckfell.Collections.Array<Entity2D> GetCollidingBodies();

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

Возвращает Reckfell.Collections.Array<Entity2D>
GetConstantForceVector2
# GetConstantForce
C#
public Vector2 GetConstantForce();
Возвращает Vector2
GetConstantTorquefloat
# GetConstantTorque
C#
public float GetConstantTorque();
Возвращает float
GetContactCountint
# GetContactCount
C#
public int GetContactCount();

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

Возвращает int
GetContinuousCollisionDetectionModeRigidBody2D.CcdMode
# GetContinuousCollisionDetectionMode
C#
public RigidBody2D.CcdMode GetContinuousCollisionDetectionMode();
Возвращает RigidBody2D.CcdMode
GetFreezeModeRigidBody2D.FreezeModeEnum
# GetFreezeMode
C#
public RigidBody2D.FreezeModeEnum GetFreezeMode();
Возвращает RigidBody2D.FreezeModeEnum
GetGravityScalefloat
# GetGravityScale
C#
public float GetGravityScale();
Возвращает float
GetInertiafloat
# GetInertia
C#
public float GetInertia();
Возвращает float
GetLinearDampfloat
# GetLinearDamp
C#
public float GetLinearDamp();
Возвращает float
GetLinearDampModeRigidBody2D.DampMode
# GetLinearDampMode
C#
public RigidBody2D.DampMode GetLinearDampMode();
Возвращает RigidBody2D.DampMode
GetLinearVelocityVector2
# GetLinearVelocity
C#
public Vector2 GetLinearVelocity();
Возвращает Vector2
GetMassfloat
# GetMass
C#
public float GetMass();
Возвращает float
GetMaxContactsReportedint
# GetMaxContactsReported
C#
public int GetMaxContactsReported();
Возвращает int
GetPhysicsMaterialOverridePhysicsMaterial
# GetPhysicsMaterialOverride
C#
public PhysicsMaterial GetPhysicsMaterialOverride();
Возвращает PhysicsMaterial
GetVelocityAtLocalPositionVector2
# GetVelocityAtLocalPosition
C#
public Vector2 GetVelocityAtLocalPosition(Vector2 localPosition);

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

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

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

Параметры
ИмяТипПо умолчанию
globalPointVector2—
Возвращает Vector2
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
IsUsingCustomIntegratorbool
# IsUsingCustomIntegrator
C#
public bool IsUsingCustomIntegrator();
Возвращает bool
SetAngularDampvoid
# SetAngularDamp
C#
public void SetAngularDamp(float angularDamp);
Параметры
ИмяТипПо умолчанию
angularDampfloat—
SetAngularDampModevoid
# SetAngularDampMode
C#
public void SetAngularDampMode(RigidBody2D.DampMode angularDampMode);
Параметры
ИмяТипПо умолчанию
angularDampModeRigidBody2D.DampMode—
SetAngularVelocityvoid
# SetAngularVelocity
C#
public void SetAngularVelocity(float angularVelocity);
Параметры
ИмяТипПо умолчанию
angularVelocityfloat—
SetAxisVelocityvoid
# SetAxisVelocity
C#
public void SetAxisVelocity(Vector2 axisVelocity);

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

Параметры
ИмяТипПо умолчанию
axisVelocityVector2—
SetCanSleepvoid
# SetCanSleep
C#
public void SetCanSleep(bool ableToSleep);
Параметры
ИмяТипПо умолчанию
ableToSleepbool—
SetCenterOfMassvoid
# SetCenterOfMass
C#
public void SetCenterOfMass(Vector2 centerOfMass);
Параметры
ИмяТипПо умолчанию
centerOfMassVector2—
SetCenterOfMassModevoid
# SetCenterOfMassMode
C#
public void SetCenterOfMassMode(RigidBody2D.CenterOfMassModeEnum mode);
Параметры
ИмяТипПо умолчанию
modeRigidBody2D.CenterOfMassModeEnum—
SetConstantForcevoid
# SetConstantForce
C#
public void SetConstantForce(Vector2 force);
Параметры
ИмяТипПо умолчанию
forceVector2—
SetConstantTorquevoid
# SetConstantTorque
C#
public void SetConstantTorque(float torque);
Параметры
ИмяТипПо умолчанию
torquefloat—
SetContactMonitorvoid
# SetContactMonitor
C#
public void SetContactMonitor(bool enabled);
Параметры
ИмяТипПо умолчанию
enabledbool—
SetContinuousCollisionDetectionModevoid
# SetContinuousCollisionDetectionMode
C#
public void SetContinuousCollisionDetectionMode(RigidBody2D.CcdMode mode);
Параметры
ИмяТипПо умолчанию
modeRigidBody2D.CcdMode—
SetFreezeEnabledvoid
# SetFreezeEnabled
C#
public void SetFreezeEnabled(bool freezeMode);
Параметры
ИмяТипПо умолчанию
freezeModebool—
SetFreezeModevoid
# SetFreezeMode
C#
public void SetFreezeMode(RigidBody2D.FreezeModeEnum freezeMode);
Параметры
ИмяТипПо умолчанию
freezeModeRigidBody2D.FreezeModeEnum—
SetGravityScalevoid
# SetGravityScale
C#
public void SetGravityScale(float gravityScale);
Параметры
ИмяТипПо умолчанию
gravityScalefloat—
SetInertiavoid
# SetInertia
C#
public void SetInertia(float inertia);
Параметры
ИмяТипПо умолчанию
inertiafloat—
SetLinearDampvoid
# SetLinearDamp
C#
public void SetLinearDamp(float linearDamp);
Параметры
ИмяТипПо умолчанию
linearDampfloat—
SetLinearDampModevoid
# SetLinearDampMode
C#
public void SetLinearDampMode(RigidBody2D.DampMode linearDampMode);
Параметры
ИмяТипПо умолчанию
linearDampModeRigidBody2D.DampMode—
SetLinearVelocityvoid
# SetLinearVelocity
C#
public void SetLinearVelocity(Vector2 linearVelocity);
Параметры
ИмяТипПо умолчанию
linearVelocityVector2—
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—
SetUseCustomIntegratorvoid
# SetUseCustomIntegrator
C#
public void SetUseCustomIntegrator(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
_IntegrateForcesvoid
# _IntegrateForces
C#
public virtual void _IntegrateForces(PhysicsDirectBodyState2D state);

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

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

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

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

Вызывается при столкновении с другим PhysicsBody2D или TileMap. Требует, чтобы RigidBody2D.ContactMonitor был установлен на true, а RigidBody2D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений. TileMap-ы обнаруживаются, если TileSet имеет Столкновение Shape2D-ов. body Entity, если он существует в дереве, другого PhysicsBody2D или TileMap.

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

Вызывается, когда заканчивается столкновение с другим PhysicsBody2D или TileMap. Требует, чтобы RigidBody2D.ContactMonitor был установлен на true, а RigidBody2D.MaxContactsReported был установлен достаточно высоким для обнаружения всех столкновений. TileMap обнаруживаются, если TileSet имеет Столкновение Shape2D-ов. body Entity, если он существует в дереве, другого PhysicsBody2D или TileMap.

Параметры обработчика
ИмяТипПо умолчанию
bodyEntity—
BodyShapeEnteredСобытие
# BodyShapeEntered
C#
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)).

Параметры обработчика
ИмяТипПо умолчанию
bodyRidRid—
bodyEntity—
bodyShapeIndexlong—
localShapeIndexlong—
BodyShapeExitedСобытие
# BodyShapeExited
C#
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)).

Параметры обработчика
ИмяТипПо умолчанию
bodyRidRid—
bodyEntity—
bodyShapeIndexlong—
localShapeIndexlong—
SleepingStateChangedСобытие
# SleepingStateChanged
C#
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.CenterOfMass. По умолчанию — исходное положение тела.

RigidBody2D.DampMode

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

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

Replace = 1

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

RigidBody2D.FreezeModeEnum

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

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

Static = 0

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

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

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

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

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