PhysicsDirectBodyState3D

Наследует: Object

Наследуется от: PhysicsDirectBodyState3DExtension

Предоставляет прямой доступ к физическому телу в PhysicsServer3D.

Описание

Предоставляет прямой доступ к физическому телу в PhysicsServer3D, позволяя безопасно изменять физические свойства. Этот объект передается через прямой обратный вызов состояния RigidBody3D и предназначен для изменения прямого состояния этого тела. См. RigidBody3D._integrate_forces().

Обучающие материалы

Свойства

Vector3

angular_velocity

Vector3

center_of_mass

Vector3

center_of_mass_local

int

collision_layer

int

collision_mask

Vector3

inverse_inertia

Basis

inverse_inertia_tensor

float

inverse_mass

Vector3

linear_velocity

Basis

principal_inertia_axes

bool

sleeping

float

step

float

total_angular_damp

Vector3

total_gravity

float

total_linear_damp

Transform3D

transform

Методы

void

add_constant_central_force(force: Vector3 = Vector3(0, 0, 0))

void

add_constant_force(force: Vector3, position: Vector3 = Vector3(0, 0, 0))

void

add_constant_torque(torque: Vector3)

void

apply_central_force(force: Vector3 = Vector3(0, 0, 0))

void

apply_central_impulse(impulse: Vector3 = Vector3(0, 0, 0))

void

apply_force(force: Vector3, position: Vector3 = Vector3(0, 0, 0))

void

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

void

apply_torque(torque: Vector3)

void

apply_torque_impulse(impulse: Vector3)

Vector3

get_constant_force() const

Vector3

get_constant_torque() const

RID

get_contact_collider(contact_idx: int) const

int

get_contact_collider_id(contact_idx: int) const

Object

get_contact_collider_object(contact_idx: int) const

Vector3

get_contact_collider_position(contact_idx: int) const

int

get_contact_collider_shape(contact_idx: int) const

Vector3

get_contact_collider_velocity_at_position(contact_idx: int) const

int

get_contact_count() const

Vector3

get_contact_impulse(contact_idx: int) const

Vector3

get_contact_local_normal(contact_idx: int) const

Vector3

get_contact_local_position(contact_idx: int) const

int

get_contact_local_shape(contact_idx: int) const

Vector3

get_contact_local_velocity_at_position(contact_idx: int) const

PhysicsDirectSpaceState3D

get_space_state()

Vector3

get_velocity_at_local_position(local_position: Vector3) const

void

integrate_forces()

void

set_constant_force(force: Vector3)

void

set_constant_torque(torque: Vector3)


Описания свойств

Vector3 angular_velocity 🔗

  • void set_angular_velocity(value: Vector3)

  • Vector3 get_angular_velocity()

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


Vector3 center_of_mass 🔗

Положение центра масс тела относительно центра тела в глобальной системе координат.


Vector3 center_of_mass_local 🔗

  • Vector3 get_center_of_mass_local()

Положение центра масс тела в локальной системе координат тела.


int collision_layer 🔗

  • void set_collision_layer(value: int)

  • int get_collision_layer()

Слой столкновений тела.


int collision_mask 🔗

  • void set_collision_mask(value: int)

  • int get_collision_mask()

Маска столкновения тела.


Vector3 inverse_inertia 🔗

Величина, обратная инерции тела.


Basis inverse_inertia_tensor 🔗

  • Basis get_inverse_inertia_tensor()

Обратная величина тензора инерции тела.


float inverse_mass 🔗

  • float get_inverse_mass()

Величина, обратная массе тела.


Vector3 linear_velocity 🔗

  • void set_linear_velocity(value: Vector3)

  • Vector3 get_linear_velocity()

Линейная скорость тела в единицах в секунду.


Basis principal_inertia_axes 🔗

  • Basis get_principal_inertia_axes()

There is currently no description for this property. Please help us by contributing one!


bool sleeping 🔗

  • void set_sleep_state(value: bool)

  • bool is_sleeping()

Если true, это тело в данный момент спит (не активно).


float step 🔗

Временной шаг (дельта), используемый для симуляции.


float total_angular_damp 🔗

  • float get_total_angular_damp()

Скорость, при которой тело прекращает вращение, если на него не действуют никакие другие силы.


Vector3 total_gravity 🔗

Суммарный вектор гравитации, действующий в данный момент на это тело.


float total_linear_damp 🔗

  • float get_total_linear_damp()

Скорость, с которой тело прекращает движение, если на него не действуют никакие другие силы.


Transform3D transform 🔗

Матрица трансформации тела.


Описания метода

void add_constant_central_force(force: Vector3 = Vector3(0, 0, 0)) 🔗

Добавляет постоянную направленную силу, не влияя на вращение, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_force = Vector3(0, 0, 0).

Это эквивалентно использованию add_constant_force() в центре масс тела.


void add_constant_force(force: Vector3, position: Vector3 = Vector3(0, 0, 0)) 🔗

Добавляет к телу постоянную позиционную силу, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_force = Vector3(0, 0, 0).

position — это смещение от начала координат тела в глобальных координатах.


void add_constant_torque(torque: Vector3) 🔗

Добавляет постоянную вращательную силу, не влияя на положение, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_torque = Vector3(0, 0, 0).


void apply_central_force(force: Vector3 = Vector3(0, 0, 0)) 🔗

Применяет направленную силу, не влияя на вращение. Сила зависит от времени и должна применяться при каждом обновлении физики.

Это эквивалентно использованию apply_force() в центре масс тела.


void apply_central_impulse(impulse: Vector3 = Vector3(0, 0, 0)) 🔗

Применяет направленный импульс, не влияя на вращение.

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

Это эквивалентно использованию apply_impulse() в центре масс тела.


void apply_force(force: Vector3, position: Vector3 = Vector3(0, 0, 0)) 🔗

Применяет позиционированную силу к телу. Сила зависит от времени и должна применяться при каждом обновлении физики.

position — это смещение от начала координат тела в глобальных координатах.


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

Применяет позиционированный импульс к телу.

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

position — это смещение от начала координат тела в глобальных координатах.


void apply_torque(torque: Vector3) 🔗

Применяет вращательную силу, не влияя на положение. Сила зависит от времени и должна применяться при каждом обновлении физики.

Примечание: для работы требуется inverse_inertia. Чтобы иметь inverse_inertia, активный CollisionShape3D должен быть дочерним элементом узла, или вы можете вручную задать inverse_inertia.


void apply_torque_impulse(impulse: Vector3) 🔗

Применяет вращательный импульс к телу, не влияя на положение.

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

Примечание: для работы требуется inverse_inertia. Чтобы иметь inverse_inertia, активный CollisionShape3D должен быть дочерним элементом узла, или вы можете вручную задать inverse_inertia.


Vector3 get_constant_force() const 🔗

Возвращает общие постоянные позиционные силы тела, применяемые во время каждого обновления физики.

См. add_constant_force() и add_constant_central_force().


Vector3 get_constant_torque() const 🔗

Возвращает общие постоянные вращательные силы тела, применяемые во время каждого обновления физики.

См. add_constant_torque().


RID get_contact_collider(contact_idx: int) const 🔗

Возвращает RID коллайдера (collider).


int get_contact_collider_id(contact_idx: int) const 🔗

Возвращает идентификатор объекта коллайдера.


Object get_contact_collider_object(contact_idx: int) const 🔗

Возвращает объект коллайдера.


Vector3 get_contact_collider_position(contact_idx: int) const 🔗

Возвращает положение точки контакта на коллайдере в глобальной системе координат.


int get_contact_collider_shape(contact_idx: int) const 🔗

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


Vector3 get_contact_collider_velocity_at_position(contact_idx: int) const 🔗

Возвращает вектор линейной скорости в точке контакта коллайдера.


int get_contact_count() const 🔗

Возвращает количество контактов этого тела с другими телами.

Примечание: По умолчанию возвращается 0, если тела не настроены на мониторинг контактов. См. RigidBody3D.contact_monitor.


Vector3 get_contact_impulse(contact_idx: int) const 🔗

Импульс, создаваемый контактом.


Vector3 get_contact_local_normal(contact_idx: int) const 🔗

Возвращает локальную нормаль в точке контакта.


Vector3 get_contact_local_position(contact_idx: int) const 🔗

Возвращает положение точки контакта на теле в глобальной системе координат.


int get_contact_local_shape(contact_idx: int) const 🔗

Возвращает локальный индекс формы столкновения.


Vector3 get_contact_local_velocity_at_position(contact_idx: int) const 🔗

Возвращает вектор линейной скорости в точке контакта тела.


PhysicsDirectSpaceState3D get_space_state() 🔗

Возвращает текущее состояние пространства, полезно для запросов.


Vector3 get_velocity_at_local_position(local_position: Vector3) const 🔗

Возвращает скорость тела в заданном относительном положении, включая как перемещение, так и вращение.


void integrate_forces() 🔗

Обновляет линейную и угловую скорость тела, применяя гравитацию и демпфирование в течение эквивалента одного физического тика.


void set_constant_force(force: Vector3) 🔗

Устанавливает общие постоянные позиционные силы тела, применяемые во время каждого обновления физики.

См. add_constant_force() и add_constant_central_force().


void set_constant_torque(torque: Vector3) 🔗

Устанавливает общие постоянные вращательные силы тела, применяемые во время каждого обновления физики.

См. add_constant_torque().