Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
PhysicalBone3D
Успадковує: PhysicsBody3D < CollisionObject3D < Node3D < Node < Object
Фізика, що використовується для створення кісток в Skeleton3D реагувати на фізику.
Опис
Вузол PhysicalBone3D — це фізичний об’єкт, за допомогою якого можна зробити так, щоб кістки в Skeleton3D реагували на фізичні ефекти.
Примітка: Щоб виявити фізичні кістки за допомогою raycasts, властивість SkeletonModifier3D.active батьківського PhysicalBoneSimulator3D має бути true, а кістка Skeleton3D має бути правильно прив’язана до PhysicalBone3D; це означає, що get_bone_id() повинен повертати дійсний ідентифікатор (>= 0).
Посібники
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методи
void |
_integrate_forces(state: PhysicsDirectBodyState3D) virtual |
void |
apply_central_impulse(impulse: Vector3) |
void |
apply_impulse(impulse: Vector3, position: Vector3 = Vector3(0, 0, 0)) |
get_bone_id() const |
|
Переліки
enum DampMode: 🔗
DampMode DAMP_MODE_COMBINE = 0
У цьому режимі значення пошкодження тіла додається до будь-якого значення, встановленого в областях або значення за замовчуванням.
DampMode DAMP_MODE_REPLACE = 1
У цьому режимі значення пошкодження тіла замінює будь-яке значення, встановлене в областях або значення за замовчуванням.
enum JointType: 🔗
JointType JOINT_TYPE_NONE = 0
До PhysicsBone3D не застосовується з’єднання.
JointType JOINT_TYPE_PIN = 1
На PhysicsBone3D застосовано штифтове з’єднання.
JointType JOINT_TYPE_CONE = 2
Конусоподібне з’єднання застосовано до PhysicsBone3D.
JointType JOINT_TYPE_HINGE = 3
На PhysicsBone3D застосовано шарнірне з’єднання.
JointType JOINT_TYPE_SLIDER = 4
До PhysicsBone3D застосовано повзун.
JointType JOINT_TYPE_6DOF = 5
У PhysicsBone3D застосовано з’єднання з 6 ступенями свободи.
Описи властивостей
Гасить обертання тіла. За замовчуванням тіло використовуватиме налаштування проекту ProjectSettings.physics/3d/default_angular_damp або будь-яке перевизначення значення, встановлене Area3D, у якому знаходиться тіло. Залежно від angular_damp_mode, ви можете встановити angular_damp, щоб додати або замінити значення демпфування тіла.
Перегляньте ProjectSettings.physics/3d/default_angular_damp, щоб дізнатися більше про демпфування.
DampMode angular_damp_mode = 0 🔗
Визначає, як застосовується angular_damp.
Vector3 angular_velocity = Vector3(0, 0, 0) 🔗
Швидкість обертання фізичногоBone3D в radians за секунду.
Transform3D body_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗
void set_body_offset(value: Transform3D)
Transform3D get_body_offset()
Комплектує трансформацію тіла.
Пружність тіла. Значення варіюються від 0 (без відскоку) до 1 (повна пружність).
Примітка: Навіть якщо для bounce встановлено значення 1.0, певна енергія з часом втрачатиметься через лінійне та кутове демпфування. Щоб PhysicalBone3D зберігав всю свою енергію з часом, встановіть bounce до 1.0, linear_damp_mode до DAMP_MODE_REPLACE, linear_damp до 0.0, angular_damp_mode до DAMP_MODE_REPLACE, а angular_damp до 0.0.
Якщо true, тіло деактивується, коли немає руху, тому не буде брати участь в симуляції, поки він пробуджується зовнішньою силою.
bool custom_integrator = false 🔗
Якщо true, для цього тіла буде відключена стандартна силова інтеграція (як тяжіння або пошкодження). Крім реагування на зіткнення, тіло буде пересуватися як визначено методом _integrate_forces(), якщо цей віртуальний метод перейменується.
Налаштування цього майна буде викликати метод PhysicsServer3D.body_set_omit_force_integration() внутрішньо.
Фрикція тіла, від 0 (без тертя) до 1 (макс тертя).
Це множиться на ProjectSettings.physics/3d/default_gravity, щоб створити силу тяжіння цього тіла. Наприклад, значення 1.0 застосовуватиме до цього тіла звичайну гравітацію, 2.0 застосовуватиме подвійну гравітацію, а 0.5 застосовуватиме половину сили тяжіння.
Transform3D joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗
void set_joint_offset(value: Transform3D)
Transform3D get_joint_offset()
Встановлює трансформацію суглоба.
Vector3 joint_rotation = Vector3(0, 0, 0) 🔗
Встановлює обертання суглоба в радіанах.
Встановлює тип з'єднання.
Гасить рухи тіла. За замовчуванням тіло використовуватиме ProjectSettings.physics/3d/default_linear_damp або будь-яке перевизначення значення, встановлене Area3D, у якому знаходиться тіло. Залежно від linear_damp_mode, linear_damp може бути додано до або замінено значення демпфування тіла.
Перегляньте ProjectSettings.physics/3d/default_linear_damp, щоб дізнатися більше про демпфування.
DampMode linear_damp_mode = 0 🔗
Визначає, як застосовується linear_damp.
Vector3 linear_velocity = Vector3(0, 0, 0) 🔗
Лінійна швидкість тіла в блоках на секунду. Чи можна використовувати спорадочно, але Не встановити цей кожен каркас, оскільки фізика може працювати в іншій нитки і працює на різних гранульованих умовах. Використовуйте _integrate_forces() в якості вашої технологічної петлі для точного контролю стану тіла.
Маса тіла.
Описи методів
void _integrate_forces(state: PhysicsDirectBodyState3D) virtual 🔗
Викликається під час обробки фізики, що дозволяє читати і безпечно модифікувати стан імітації об'єкта. За замовчуванням, він називається до стандартної інтеграції сили, але custom_integrator має можливість вимкнути стандартну інтеграцію сил і повністю налаштувати силу інтеграції для тіла.
void apply_central_impulse(impulse: Vector3) 🔗
Застосовує спрямований імпульс, не впливаючи на обертання.
Імпульс не залежить від часу! Застосування імпульсу до кожного кадру призведе до появи сили, що залежить від частоти кадрів. З цієї причини його слід використовувати лише під час моделювання одноразових впливів (в інших випадках використовуйте функції "_integrate_forces").
Це еквівалентно використанню apply_impulse() у центрі мас тіла.
void apply_impulse(impulse: Vector3, position: Vector3 = Vector3(0, 0, 0)) 🔗
Застосовує позиціонований імпульс до PhysicsBone3D.
Імпульс не залежить від часу! Застосування імпульсу до кожного кадру призведе до появи сили, що залежить від частоти кадрів. З цієї причини його слід використовувати лише під час моделювання одноразових впливів (в інших випадках використовуйте функції "_integrate_forces").
position — це зміщення від початку PhysicsBone3D у глобальних координатах.
Повертає унікальний ідентифікатор PhysicsBone3D.
Повертає true, якщо PhysicsBone3D дозволено симулювати фізику.
bool is_simulating_physics() 🔗
Повертає true, якщо PhysicsBone3D зараз імітує фізику.