PhysicalBone3D

Успадковує: PhysicsBody3D < CollisionObject3D < Node3D < Node < Object

Фізика, що використовується для створення кісток в Skeleton3D реагувати на фізику.

Опис

PhysicalBone3D вершина є фізико-фізичним тілом, який можна використовувати для того, щоб зробити кістки в Skeleton3D реагувати на фізику.

Примітка: Для виявлення фізичних кісток з променями, SkeletonModifier3D.active властивість батька PhysicalBoneSimulator3D повинна бути true і Skeleton3D повинні бути призначені для PhysicalBone3D правильно; це означає, що get_bone_id() повинен повернути дійсну ID (>= 0).

Властивості

float

angular_damp

0.0

DampMode

angular_damp_mode

0

Vector3

angular_velocity

Vector3(0, 0, 0)

Transform3D

body_offset

Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)

float

bounce

0.0

bool

can_sleep

true

bool

custom_integrator

false

float

friction

1.0

float

gravity_scale

1.0

Transform3D

joint_offset

Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)

Vector3

joint_rotation

Vector3(0, 0, 0)

JointType

joint_type

0

float

linear_damp

0.0

DampMode

linear_damp_mode

0

Vector3

linear_velocity

Vector3(0, 0, 0)

float

mass

1.0

Методи

void

_integrate_forces(state: PhysicsDirectBodyState3D) virtual

void

apply_central_impulse(impulse: Vector3)

void

apply_impulse(impulse: Vector3, position: Vector3 = Vector3(0, 0, 0))

int

get_bone_id() const

bool

get_simulate_physics()

bool

is_simulating_physics()


Переліки

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 ступенями свободи.


Описи властивостей

float angular_damp = 0.0 🔗

  • void set_angular_damp(value: float)

  • float get_angular_damp()

Гасить обертання тіла. За замовчуванням тіло використовуватиме налаштування проекту 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) 🔗

  • void set_angular_velocity(value: Vector3)

  • Vector3 get_angular_velocity()

Швидкість обертання фізичногоBone3D в radians за секунду.


Transform3D body_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗

Комплектує трансформацію тіла.


float bounce = 0.0 🔗

  • void set_bounce(value: float)

  • float get_bounce()

Пружність тіла. Значення варіюються від 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.


bool can_sleep = true 🔗

  • void set_can_sleep(value: bool)

  • bool is_able_to_sleep()

Якщо true, тіло деактивується, коли немає руху, тому не буде брати участь в симуляції, поки він пробуджується зовнішньою силою.


bool custom_integrator = false 🔗

  • void set_use_custom_integrator(value: bool)

  • bool is_using_custom_integrator()

Якщо true, для цього тіла буде відключена стандартна силова інтеграція (як тяжіння або пошкодження). Крім реагування на зіткнення, тіло буде пересуватися як визначено методом _integrate_forces(), якщо цей віртуальний метод перейменується.

Налаштування цього майна буде викликати метод PhysicsServer3D.body_set_omit_force_integration() внутрішньо.


float friction = 1.0 🔗

  • void set_friction(value: float)

  • float get_friction()

Фрикція тіла, від 0 (без тертя) до 1 (макс тертя).


float gravity_scale = 1.0 🔗

  • void set_gravity_scale(value: float)

  • float get_gravity_scale()

Це множиться на 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) 🔗

Встановлює трансформацію суглоба.


Vector3 joint_rotation = Vector3(0, 0, 0) 🔗

  • void set_joint_rotation(value: Vector3)

  • Vector3 get_joint_rotation()

Встановлює обертання суглоба в радіанах.


JointType joint_type = 0 🔗

Встановлює тип з'єднання.


float linear_damp = 0.0 🔗

  • void set_linear_damp(value: float)

  • float get_linear_damp()

Гасить рухи тіла. За замовчуванням тіло використовуватиме 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) 🔗

  • void set_linear_velocity(value: Vector3)

  • Vector3 get_linear_velocity()

Лінійна швидкість тіла в блоках на секунду. Чи можна використовувати спорадочно, але Не встановити цей кожен каркас, оскільки фізика може працювати в іншій нитки і працює на різних гранульованих умовах. Використовуйте _integrate_forces() в якості вашої технологічної петлі для точного контролю стану тіла.


float mass = 1.0 🔗

Маса тіла.


Описи методів

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 у глобальних координатах.


int get_bone_id() const 🔗

Повертає унікальний ідентифікатор PhysicsBone3D.


bool get_simulate_physics() 🔗

Повертає true, якщо PhysicsBone3D дозволено симулювати фізику.


bool is_simulating_physics() 🔗

Повертає true, якщо PhysicsBone3D зараз імітує фізику.