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