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 🔗
Возвращает скорость тела в заданном относительном положении, включая как перемещение, так и вращение.
void integrate_forces() 🔗
Обновляет линейную и угловую скорость тела, применяя гравитацию и демпфирование в течение эквивалента одного физического тика.
void set_constant_force(force: Vector3) 🔗
Устанавливает общие постоянные позиционные силы тела, применяемые во время каждого обновления физики.
См. add_constant_force() и add_constant_central_force().
void set_constant_torque(torque: Vector3) 🔗
Устанавливает общие постоянные вращательные силы тела, применяемые во время каждого обновления физики.