reckfellENGINE

PhysicalBone3D

Физическое тело кости с привязкой к скелету.

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

PhysicalBone3D связывает физическое тело с костью Skeleton3D через PhysicalBoneSimulator3D. Имя кости задаётся динамическим свойством Set("bone_name", name); публичного C#-свойства BoneName здесь нет. GetBoneId позволяет проверить результат привязки.

BodyOffset и JointOffset описывают разные системы: положение тела относительно кости и рамку соединения. Collider, масса и сустав не создают готовую анатомическую модель автоматически. Управляйте запуском/остановкой через simulator и согласуйте физику с анимацией и обычным контроллером персонажа.

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

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

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

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

Свойства16

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

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

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

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

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

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

BodyOffsetСвойство
# BodyOffset
C#
public Transform3D BodyOffset { get; set; }

Смещение физического тела относительно связанной кости. Настраивайте вместе с формой и rest-позой; перенос одного видимого меша не исправляет положение физического тела/сустава.

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

Упругость тела. Значения варьируются от 0 (без отскока) до 1 (полная упругость). Примечание: Даже если PhysicalBone3D.Bounce установлен на 1.0, часть энергии будет потеряна со временем из-за линейного и углового затухания. Чтобы иметь PhysicalBone3D, который сохраняет всю свою энергию с течением времени, установите PhysicalBone3D.Bounce на 1.0, PhysicalBone3D.LinearDampMode на PhysicalBone3D.DampMode.Replace, PhysicalBone3D.LinearDamp на 0.0, PhysicalBone3D.AngularDampMode на PhysicalBone3D.DampMode.Replace и PhysicalBone3D.AngularDamp на 0.0.

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

Если true, тело деактивируется при отсутствии движения, поэтому оно не будет участвовать в симуляции, пока не будет разбужено внешней силой.

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

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

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

Трение тела от 0 (отсутствие трения) до 1 (максимальное трение).

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

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

JointOffsetСвойство
# JointOffset
C#
public Transform3D JointOffset { get; set; }

Рамка физического соединения. Отличается от BodyOffset; проверьте системы координат, направление осей и ограничения выбранного типа сустава/backend.

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

Задает угол поворота сочленения в радианах.

JointTypeСвойство
# JointType
C#
public PhysicalBone3D.JointTypeEnum JointType { get; set; }

Устанавливает тип соединения.

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

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

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

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

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

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

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

Масса тела.

Методы39

ApplyCentralImpulsevoid
# ApplyCentralImpulse
C#
public void ApplyCentralImpulse(Vector3 impulse);

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

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

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

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

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

GetAngularDampfloat
# GetAngularDamp
C#
public float GetAngularDamp();
Возвращает float
GetAngularDampModePhysicalBone3D.DampMode
# GetAngularDampMode
C#
public PhysicalBone3D.DampMode GetAngularDampMode();
Возвращает PhysicalBone3D.DampMode
GetAngularVelocityVector3
# GetAngularVelocity
C#
public Vector3 GetAngularVelocity();
Возвращает Vector3
GetBodyOffsetTransform3D
# GetBodyOffset
C#
public Transform3D GetBodyOffset();
Возвращает Transform3D
GetBoneIdint
# GetBoneId
C#
public int GetBoneId();

Индекс связанной кости скелета; -1 означает отсутствующую привязку. Проверьте динамическое bone_name и иерархию simulator/Skeleton3D. Это не индекс ребёнка в дереве сущностей.

Возвращает int
GetBouncefloat
# GetBounce
C#
public float GetBounce();
Возвращает float
GetFrictionfloat
# GetFriction
C#
public float GetFriction();
Возвращает float
GetGravityScalefloat
# GetGravityScale
C#
public float GetGravityScale();
Возвращает float
GetJointOffsetTransform3D
# GetJointOffset
C#
public Transform3D GetJointOffset();
Возвращает Transform3D
GetJointRidRid
# GetJointRid
C#
public Rid GetJointRid();

Возвращает внутренний Rid сочленения из PhysicsServer3D.

Возвращает Rid
GetJointRotationVector3
# GetJointRotation
C#
public Vector3 GetJointRotation();
Возвращает Vector3
GetJointTypePhysicalBone3D.JointTypeEnum
# GetJointType
C#
public PhysicalBone3D.JointTypeEnum GetJointType();
Возвращает PhysicalBone3D.JointTypeEnum
GetLinearDampfloat
# GetLinearDamp
C#
public float GetLinearDamp();
Возвращает float
GetLinearDampModePhysicalBone3D.DampMode
# GetLinearDampMode
C#
public PhysicalBone3D.DampMode GetLinearDampMode();
Возвращает PhysicalBone3D.DampMode
GetLinearVelocityVector3
# GetLinearVelocity
C#
public Vector3 GetLinearVelocity();
Возвращает Vector3
GetMassfloat
# GetMass
C#
public float GetMass();
Возвращает float
GetSimulatePhysicsbool
# GetSimulatePhysics
C#
public bool GetSimulatePhysics();

Возвращает true, если PhysicsBone3D разрешено моделировать физику.

Возвращает bool
IsAbleToSleepbool
# IsAbleToSleep
C#
public bool IsAbleToSleep();
Возвращает bool
IsSimulatingPhysicsbool
# IsSimulatingPhysics
C#
public bool IsSimulatingPhysics();

Возвращает true, если PhysicsBone3D в данный момент моделирует физику.

Возвращает bool
IsUsingCustomIntegratorbool
# IsUsingCustomIntegrator
C#
public bool IsUsingCustomIntegrator();
Возвращает bool
SetAngularDampvoid
# SetAngularDamp
C#
public void SetAngularDamp(float angularDamp);
Параметры
ИмяТипПо умолчанию
angularDampfloat—
SetAngularDampModevoid
# SetAngularDampMode
C#
public void SetAngularDampMode(PhysicalBone3D.DampMode angularDampMode);
Параметры
ИмяТипПо умолчанию
angularDampModePhysicalBone3D.DampMode—
SetAngularVelocityvoid
# SetAngularVelocity
C#
public void SetAngularVelocity(Vector3 angularVelocity);
Параметры
ИмяТипПо умолчанию
angularVelocityVector3—
SetBodyOffsetvoid
# SetBodyOffset
C#
public void SetBodyOffset(Transform3D offset);
Параметры
ИмяТипПо умолчанию
offsetTransform3D—
SetBouncevoid
# SetBounce
C#
public void SetBounce(float bounce);
Параметры
ИмяТипПо умолчанию
bouncefloat—
SetCanSleepvoid
# SetCanSleep
C#
public void SetCanSleep(bool ableToSleep);
Параметры
ИмяТипПо умолчанию
ableToSleepbool—
SetFrictionvoid
# SetFriction
C#
public void SetFriction(float friction);
Параметры
ИмяТипПо умолчанию
frictionfloat—
SetGravityScalevoid
# SetGravityScale
C#
public void SetGravityScale(float gravityScale);
Параметры
ИмяТипПо умолчанию
gravityScalefloat—
SetJointOffsetvoid
# SetJointOffset
C#
public void SetJointOffset(Transform3D offset);
Параметры
ИмяТипПо умолчанию
offsetTransform3D—
SetJointRotationvoid
# SetJointRotation
C#
public void SetJointRotation(Vector3 euler);
Параметры
ИмяТипПо умолчанию
eulerVector3—
SetJointTypevoid
# SetJointType
C#
public void SetJointType(PhysicalBone3D.JointTypeEnum jointType);
Параметры
ИмяТипПо умолчанию
jointTypePhysicalBone3D.JointTypeEnum—
SetLinearDampvoid
# SetLinearDamp
C#
public void SetLinearDamp(float linearDamp);
Параметры
ИмяТипПо умолчанию
linearDampfloat—
SetLinearDampModevoid
# SetLinearDampMode
C#
public void SetLinearDampMode(PhysicalBone3D.DampMode linearDampMode);
Параметры
ИмяТипПо умолчанию
linearDampModePhysicalBone3D.DampMode—
SetLinearVelocityvoid
# SetLinearVelocity
C#
public void SetLinearVelocity(Vector3 linearVelocity);
Параметры
ИмяТипПо умолчанию
linearVelocityVector3—
SetMassvoid
# SetMass
C#
public void SetMass(float mass);
Параметры
ИмяТипПо умолчанию
massfloat—
SetUseCustomIntegratorvoid
# SetUseCustomIntegrator
C#
public void SetUseCustomIntegrator(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
_IntegrateForcesvoid
# _IntegrateForces
C#
public virtual void _IntegrateForces(PhysicsDirectBodyState3D state);

Вызывается во время обработки физики, позволяя вам читать и безопасно изменять состояние симуляции для объекта. По умолчанию он вызывается перед стандартной интеграцией силы, но свойство PhysicalBone3D.CustomIntegrator позволяет вам отключить стандартную интеграцию силы и выполнить полностью настраиваемую интеграцию силы для тела.

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

PhysicalBone3D.DampMode

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

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

Replace = 1

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

PhysicalBone3D.JointTypeEnum

ЗначениеОписание
Cone = 2

К PhysicsBone3D применено коническое соединение.

СОВМЕСТНЫЙ ТИПЕ

Hinge = 3

К PhysicsBone3D применено шарнирное соединение.

None = 0

К PhysicsBone3D не применяется ни одного сочленения.

Pin = 1

К PhysicsBone3D применено штифтовое соединение.

СОВМЕСТНЫЙ_ТИПЕ_ЦЕНЬ

Slider = 4

К PhysicsBone3D применено скользящее соединение.

Type6Dof = 5

К PhysicsBone3D применено соединение с 6 степенями свободы.

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

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

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

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