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...
PhysicsDirectBodyState3D
Наследует: Object
Наследуется от: PhysicsDirectBodyState3DExtension
Предоставляет прямой доступ к физическому телу в PhysicsServer3D.
Описание
Предоставляет прямой доступ к физическому телу в PhysicsServer3D, позволяя безопасно изменять физические свойства. Этот объект передается через прямой обратный вызов состояния RigidBody3D и предназначен для изменения прямого состояния этого тела. См. RigidBody3D._integrate_forces().
Обучающие материалы
Свойства
Методы
Описания свойств
Скорость вращения тела в радианах в секунду.
Vector3 get_center_of_mass()
Положение центра масс тела относительно центра тела в глобальной системе координат.
Vector3 center_of_mass_local 🔗
Vector3 get_center_of_mass_local()
Положение центра масс тела в локальной системе координат тела.
Слой столкновений тела.
Маска столкновения тела.
Vector3 get_inverse_inertia()
Величина, обратная инерции тела.
Basis inverse_inertia_tensor 🔗
Basis get_inverse_inertia_tensor()
Обратная величина тензора инерции тела.
float get_inverse_mass()
Величина, обратная массе тела.
Линейная скорость тела в единицах в секунду.
Basis principal_inertia_axes 🔗
Basis get_principal_inertia_axes()
There is currently no description for this property. Please help us by contributing one!
Если true, это тело в данный момент спит (не активно).
float get_step()
Временной шаг (дельта), используемый для симуляции.
float get_total_angular_damp()
Скорость, при которой тело прекращает вращение, если на него не действуют никакие другие силы.
Vector3 get_total_gravity()
Суммарный вектор гравитации, действующий в данный момент на это тело.
float get_total_linear_damp()
Скорость, с которой тело прекращает движение, если на него не действуют никакие другие силы.
Transform3D transform 🔗
void set_transform(value: Transform3D)
Transform3D get_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 🔗
Возвращает общие постоянные вращательные силы тела, применяемые во время каждого обновления физики.
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 🔗
Returns the body's velocity at the given relative position.
local_position is the offset from the body origin in global coordinates.
void integrate_forces() 🔗
Обновляет линейную и угловую скорость тела, применяя гравитацию и демпфирование в течение эквивалента одного физического тика.
void set_constant_force(force: Vector3) 🔗
Устанавливает общие постоянные позиционные силы тела, применяемые во время каждого обновления физики.
См. add_constant_force() и add_constant_central_force().
void set_constant_torque(torque: Vector3) 🔗
Устанавливает общие постоянные вращательные силы тела, применяемые во время каждого обновления физики.