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...
PhysicsDirectBodyState2D
Наследует: Object
Наследуется от: PhysicsDirectBodyState2DExtension
Предоставляет прямой доступ к физическому телу в PhysicsServer2D.
Описание
Предоставляет прямой доступ к физическому телу в PhysicsServer2D, позволяя безопасно изменять физические свойства. Этот объект передается через прямой обратный вызов состояния RigidBody2D и предназначен для изменения прямого состояния этого тела. См. RigidBody2D._integrate_forces().
Обучающие материалы
Свойства
Методы
Описания свойств
Скорость вращения тела в радианах в секунду.
Vector2 get_center_of_mass()
Положение центра масс тела относительно центра тела в глобальной системе координат.
Vector2 center_of_mass_local 🔗
Vector2 get_center_of_mass_local()
Положение центра масс тела в локальной системе координат тела.
Слой столкновений тела.
Маска столкновения тела.
float get_inverse_inertia()
Величина, обратная инерции тела.
float get_inverse_mass()
Величина, обратная массе тела.
Линейная скорость тела в пикселях в секунду.
Если true, это тело в данный момент спит (не активно).
float get_step()
Временной шаг (дельта), используемый для симуляции.
float get_total_angular_damp()
Скорость, при которой тело прекращает вращение, если на него не действуют никакие другие силы.
Vector2 get_total_gravity()
Суммарный вектор гравитации, действующий в данный момент на это тело.
float get_total_linear_damp()
Скорость, с которой тело прекращает движение, если на него не действуют никакие другие силы.
Transform2D transform 🔗
void set_transform(value: Transform2D)
Transform2D get_transform()
Матрица трансформации тела.
Описания метода
void add_constant_central_force(force: Vector2 = Vector2(0, 0)) 🔗
Добавляет постоянную направленную силу, не влияя на вращение, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_force = Vector2(0, 0).
Это эквивалентно использованию add_constant_force() в центре масс тела.
void add_constant_force(force: Vector2, position: Vector2 = Vector2(0, 0)) 🔗
Добавляет к телу постоянную позиционную силу, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_force = Vector2(0, 0).
position — это смещение от начала координат тела в глобальных координатах.
void add_constant_torque(torque: float) 🔗
Добавляет постоянную вращательную силу, не влияя на положение, которая продолжает применяться с течением времени, пока не будет очищена с помощью constant_torque = 0.
void apply_central_force(force: Vector2 = Vector2(0, 0)) 🔗
Применяет направленную силу, не влияя на вращение. Сила зависит от времени и должна применяться при каждом обновлении физики.
Это эквивалентно использованию apply_force() в центре масс тела.
void apply_central_impulse(impulse: Vector2) 🔗
Применяет направленный импульс, не влияя на вращение.
Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_force").
Это эквивалентно использованию apply_impulse() в центре масс тела.
void apply_force(force: Vector2, position: Vector2 = Vector2(0, 0)) 🔗
Применяет позиционированную силу к телу. Сила зависит от времени и должна применяться при каждом обновлении физики.
position — это смещение от начала координат тела в глобальных координатах.
void apply_impulse(impulse: Vector2, position: Vector2 = Vector2(0, 0)) 🔗
Применяет позиционированный импульс к телу.
Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_force").
position — это смещение от начала координат тела в глобальных координатах.
void apply_torque(torque: float) 🔗
Применяет вращательную силу, не влияя на положение. Сила зависит от времени и должна применяться при каждом обновлении физики.
Примечание: для работы требуется inverse_inertia. Чтобы иметь inverse_inertia, активный CollisionShape2D должен быть дочерним элементом узла, или вы можете вручную задать inverse_inertia.
void apply_torque_impulse(impulse: float) 🔗
Применяет вращательный импульс к телу, не влияя на положение.
Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_force").
Примечание: для работы требуется inverse_inertia. Чтобы иметь inverse_inertia, активный CollisionShape2D должен быть дочерним элементом узла, или вы можете вручную задать inverse_inertia.
Vector2 get_constant_force() const 🔗
Возвращает общие постоянные позиционные силы тела, применяемые во время каждого обновления физики.
См. add_constant_force() и add_constant_central_force().
float 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 🔗
Возвращает объект коллайдера. Это зависит от того, как он был создан (возвращает узел сцены, если таковой использовался для его создания).
Vector2 get_contact_collider_position(contact_idx: int) const 🔗
Возвращает положение точки контакта на коллайдере в глобальной системе координат.
int get_contact_collider_shape(contact_idx: int) const 🔗
Возвращает индекс формы коллайдера.
Vector2 get_contact_collider_velocity_at_position(contact_idx: int) const 🔗
Возвращает вектор скорости в точке контакта коллайдера.
int get_contact_count() const 🔗
Возвращает количество контактов этого тела с другими телами.
Примечание: По умолчанию возвращается 0, если тела не настроены на мониторинг контактов. См. RigidBody2D.contact_monitor.
Vector2 get_contact_impulse(contact_idx: int) const 🔗
Возвращает импульс, созданный контактом.
Vector2 get_contact_local_normal(contact_idx: int) const 🔗
Возвращает локальную нормаль в точке контакта.
Vector2 get_contact_local_position(contact_idx: int) const 🔗
Возвращает положение точки контакта на теле в глобальной системе координат.
int get_contact_local_shape(contact_idx: int) const 🔗
Возвращает локальный индекс формы столкновения.
Vector2 get_contact_local_velocity_at_position(contact_idx: int) const 🔗
Возвращает вектор скорости в точке контакта тела.
PhysicsDirectSpaceState2D get_space_state() 🔗
Возвращает текущее состояние пространства, полезно для запросов.
Vector2 get_velocity_at_local_position(local_position: Vector2) 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: Vector2) 🔗
Устанавливает общие постоянные позиционные силы тела, применяемые во время каждого обновления физики.
См. add_constant_force() и add_constant_central_force().
void set_constant_torque(torque: float) 🔗
Устанавливает общие постоянные вращательные силы тела, применяемые во время каждого обновления физики.