PhysicalBone3D
Успадковує: PhysicsBody3D < CollisionObject3D < Node3D < Node < Object
Фізика, що використовується для створення кісток в Skeleton3D реагувати на фізику.
Опис
PhysicalBone3D вершина є фізико-фізичним тілом, який можна використовувати для того, щоб зробити кістки в Skeleton3D реагувати на фізику.
Примітка: Для виявлення фізичних кісток з променями, SkeletonModifier3D.active властивість батька PhysicalBoneSimulator3D повинна бути true і Skeleton3D повинні бути призначені для PhysicalBone3D правильно; це означає, що get_bone_id() повинен повернути дійсну 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 зараз імітує фізику.