PhysicalBone3D
Физическое тело кости с привязкой к скелету.
PhysicalBone3D связывает физическое тело с костью Skeleton3D через PhysicalBoneSimulator3D. Имя кости задаётся динамическим свойством Set("bone_name", name); публичного C#-свойства BoneName здесь нет. GetBoneId позволяет проверить результат привязки.
BodyOffset и JointOffset описывают разные системы: положение тела относительно кости и рамку соединения. Collider, масса и сустав не создают готовую анатомическую модель автоматически. Управляйте запуском/остановкой через simulator и согласуйте физику с анимацией и обычным контроллером персонажа.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
PhysicalBone3DКонструктор
public PhysicalBone3D();Свойства16
AngularDampСвойство
public float AngularDamp { get; set; }Демпфирует вращение тела. По умолчанию тело будет использовать настройку проекта ProjectSettings.physics/3d/default_angular_damp или любое переопределение значения, заданное Area3D, в котором находится тело. В зависимости от PhysicalBone3D.AngularDampMode вы можете задать PhysicalBone3D.AngularDamp для добавления или замены значения демпфирования тела.
Подробнее о демпфировании см. в ProjectSettings.physics/3d/default_angular_damp.
AngularDampModeСвойство
public PhysicalBone3D.DampMode AngularDampMode { get; set; }Определяет, как применяется PhysicalBone3D.AngularDamp.
AngularVelocityСвойство
public Vector3 AngularVelocity { get; set; }Скорость вращения PhysicalBone3D в радианах в секунду.
BodyOffsetСвойство
public Transform3D BodyOffset { get; set; }Смещение физического тела относительно связанной кости. Настраивайте вместе с формой и rest-позой; перенос одного видимого меша не исправляет положение физического тела/сустава.
BounceСвойство
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Свойство
public bool CanSleep { get; set; }Если true, тело деактивируется при отсутствии движения, поэтому оно не будет участвовать в симуляции, пока не будет разбужено внешней силой.
CustomIntegratorСвойство
public bool CustomIntegrator { get; set; }Если true, стандартная интеграция силы (например, гравитация или демпфирование) будет отключена для этого тела. За исключением реакции на столкновение, тело будет двигаться только так, как определено методом PhysicalBone3D._IntegrateForces, если этот виртуальный метод переопределен.
Установка этого свойства вызовет метод PhysicsServer3D.BodySetOmitForceIntegration внутренне.
FrictionСвойство
public float Friction { get; set; }Трение тела от 0 (отсутствие трения) до 1 (максимальное трение).
GravityScaleСвойство
public float GravityScale { get; set; }Это умножается на ProjectSettings.physics/3d/default_gravity, чтобы получить гравитацию этого тела. Например, значение 1.0 применит нормальную гравитацию, 2.0 применит двойную гравитацию, а 0.5 применит половину гравитации к этому телу.
JointOffsetСвойство
public Transform3D JointOffset { get; set; }Рамка физического соединения. Отличается от BodyOffset; проверьте системы координат, направление осей и ограничения выбранного типа сустава/backend.
JointRotationСвойство
public Vector3 JointRotation { get; set; }Задает угол поворота сочленения в радианах.
JointTypeСвойство
public PhysicalBone3D.JointTypeEnum JointType { get; set; }Устанавливает тип соединения.
LinearDampСвойство
public float LinearDamp { get; set; }Демпфирует движение тела. По умолчанию тело будет использовать ProjectSettings.physics/3d/default_linear_damp или любое переопределение значения, заданное Area3D, в котором находится тело. В зависимости от PhysicalBone3D.LinearDampMode, PhysicalBone3D.LinearDamp может быть добавлен или заменен значением демпфирования тела.
Подробнее о демпфировании см. ProjectSettings.physics/3d/default_linear_damp.
LinearDampModeСвойство
public PhysicalBone3D.DampMode LinearDampMode { get; set; }Определяет, как применяется PhysicalBone3D.LinearDamp.
LinearVelocityСвойство
public Vector3 LinearVelocity { get; set; }Линейная скорость тела в единицах в секунду. Может использоваться спорадически, но не устанавливайте это в каждом кадре, потому что физика может работать в другом потоке и работать с другой гранулярностью. Используйте PhysicalBone3D._IntegrateForces в качестве цикла процесса для точного управления состоянием тела.
MassСвойство
public float Mass { get; set; }Масса тела.
Методы39
ApplyCentralImpulsevoid
public void ApplyCentralImpulse(Vector3 impulse);Применяет направленный импульс, не влияя на вращение.
Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_integrate_forces").
Это эквивалентно использованию PhysicalBone3D.ApplyImpulse в центре масс тела.
| Имя | Тип | По умолчанию |
|---|---|---|
impulse | Vector3 | — |
ApplyImpulsevoid
public void ApplyImpulse(Vector3 impulse, Vector3? position = default);Применяет позиционированный импульс к PhysicsBone3D.
Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_integrate_forces").
position — это смещение от начала координат PhysicsBone3D в глобальных координатах.
| Имя | Тип | По умолчанию |
|---|---|---|
impulse | Vector3 | — |
position | Vector3? | default |
positionЕсли параметр не имеет значения, то значение по умолчанию: new Vector3(0.0f, 0.0f, 0.0f).
GetAngularDampfloat
public float GetAngularDamp();floatGetAngularDampModePhysicalBone3D.DampMode
public PhysicalBone3D.DampMode GetAngularDampMode();PhysicalBone3D.DampModeGetAngularVelocityVector3
public Vector3 GetAngularVelocity();Vector3GetBodyOffsetTransform3D
public Transform3D GetBodyOffset();Transform3DGetBoneIdint
public int GetBoneId();Индекс связанной кости скелета; -1 означает отсутствующую привязку. Проверьте динамическое bone_name и иерархию simulator/Skeleton3D. Это не индекс ребёнка в дереве сущностей.
intGetBouncefloat
public float GetBounce();floatGetFrictionfloat
public float GetFriction();floatGetGravityScalefloat
public float GetGravityScale();floatGetJointOffsetTransform3D
public Transform3D GetJointOffset();Transform3DGetJointRidRid
public Rid GetJointRid();Возвращает внутренний Rid сочленения из PhysicsServer3D.
RidGetJointRotationVector3
public Vector3 GetJointRotation();Vector3GetJointTypePhysicalBone3D.JointTypeEnum
public PhysicalBone3D.JointTypeEnum GetJointType();PhysicalBone3D.JointTypeEnumGetLinearDampfloat
public float GetLinearDamp();floatGetLinearDampModePhysicalBone3D.DampMode
public PhysicalBone3D.DampMode GetLinearDampMode();PhysicalBone3D.DampModeGetLinearVelocityVector3
public Vector3 GetLinearVelocity();Vector3GetMassfloat
public float GetMass();floatGetSimulatePhysicsbool
public bool GetSimulatePhysics();Возвращает true, если PhysicsBone3D разрешено моделировать физику.
boolIsAbleToSleepbool
public bool IsAbleToSleep();boolIsSimulatingPhysicsbool
public bool IsSimulatingPhysics();Возвращает true, если PhysicsBone3D в данный момент моделирует физику.
boolIsUsingCustomIntegratorbool
public bool IsUsingCustomIntegrator();boolSetAngularDampvoid
public void SetAngularDamp(float angularDamp);| Имя | Тип | По умолчанию |
|---|---|---|
angularDamp | float | — |
SetAngularDampModevoid
public void SetAngularDampMode(PhysicalBone3D.DampMode angularDampMode);| Имя | Тип | По умолчанию |
|---|---|---|
angularDampMode | PhysicalBone3D.DampMode | — |
SetAngularVelocityvoid
public void SetAngularVelocity(Vector3 angularVelocity);| Имя | Тип | По умолчанию |
|---|---|---|
angularVelocity | Vector3 | — |
SetBodyOffsetvoid
public void SetBodyOffset(Transform3D offset);| Имя | Тип | По умолчанию |
|---|---|---|
offset | Transform3D | — |
SetBouncevoid
public void SetBounce(float bounce);| Имя | Тип | По умолчанию |
|---|---|---|
bounce | float | — |
SetCanSleepvoid
public void SetCanSleep(bool ableToSleep);| Имя | Тип | По умолчанию |
|---|---|---|
ableToSleep | bool | — |
SetFrictionvoid
public void SetFriction(float friction);| Имя | Тип | По умолчанию |
|---|---|---|
friction | float | — |
SetGravityScalevoid
public void SetGravityScale(float gravityScale);| Имя | Тип | По умолчанию |
|---|---|---|
gravityScale | float | — |
SetJointOffsetvoid
public void SetJointOffset(Transform3D offset);| Имя | Тип | По умолчанию |
|---|---|---|
offset | Transform3D | — |
SetJointRotationvoid
public void SetJointRotation(Vector3 euler);| Имя | Тип | По умолчанию |
|---|---|---|
euler | Vector3 | — |
SetJointTypevoid
public void SetJointType(PhysicalBone3D.JointTypeEnum jointType);| Имя | Тип | По умолчанию |
|---|---|---|
jointType | PhysicalBone3D.JointTypeEnum | — |
SetLinearDampvoid
public void SetLinearDamp(float linearDamp);| Имя | Тип | По умолчанию |
|---|---|---|
linearDamp | float | — |
SetLinearDampModevoid
public void SetLinearDampMode(PhysicalBone3D.DampMode linearDampMode);| Имя | Тип | По умолчанию |
|---|---|---|
linearDampMode | PhysicalBone3D.DampMode | — |
SetLinearVelocityvoid
public void SetLinearVelocity(Vector3 linearVelocity);| Имя | Тип | По умолчанию |
|---|---|---|
linearVelocity | Vector3 | — |
SetMassvoid
public void SetMass(float mass);| Имя | Тип | По умолчанию |
|---|---|---|
mass | float | — |
SetUseCustomIntegratorvoid
public void SetUseCustomIntegrator(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
_IntegrateForcesvoid
public virtual void _IntegrateForces(PhysicsDirectBodyState3D state);Вызывается во время обработки физики, позволяя вам читать и безопасно изменять состояние симуляции для объекта. По умолчанию он вызывается перед стандартной интеграцией силы, но свойство PhysicalBone3D.CustomIntegrator позволяет вам отключить стандартную интеграцию силы и выполнить полностью настраиваемую интеграцию силы для тела.
| Имя | Тип | По умолчанию |
|---|---|---|
state | PhysicsDirectBodyState3D | — |
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 степенями свободы. |