PhysicsDirectBodyState2D

Наследует: Object

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

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

Описание

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

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

Свойства

float

angular_velocity

Vector2

center_of_mass

Vector2

center_of_mass_local

int

collision_layer

int

collision_mask

float

inverse_inertia

float

inverse_mass

Vector2

linear_velocity

bool

sleeping

float

step

float

total_angular_damp

Vector2

total_gravity

float

total_linear_damp

Transform2D

transform

Методы

void

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

void

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

void

add_constant_torque(torque: float)

void

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

void

apply_central_impulse(impulse: Vector2)

void

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

void

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

void

apply_torque(torque: float)

void

apply_torque_impulse(impulse: float)

Vector2

get_constant_force() const

float

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

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

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)

void

set_constant_torque(torque: float)


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

float angular_velocity 🔗

  • void set_angular_velocity(value: float)

  • float get_angular_velocity()

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


Vector2 center_of_mass 🔗

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


Vector2 center_of_mass_local 🔗

  • Vector2 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()

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


float inverse_inertia 🔗

  • float get_inverse_inertia()

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


float inverse_mass 🔗

  • float get_inverse_mass()

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


Vector2 linear_velocity 🔗

  • void set_linear_velocity(value: Vector2)

  • Vector2 get_linear_velocity()

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


bool sleeping 🔗

  • void set_sleep_state(value: bool)

  • bool is_sleeping()

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


float step 🔗

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


float total_angular_damp 🔗

  • float get_total_angular_damp()

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


Vector2 total_gravity 🔗

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


float total_linear_damp 🔗

  • float get_total_linear_damp()

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


Transform2D 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 🔗

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

См. 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 🔗

Возвращает объект коллайдера. Это зависит от того, как он был создан (возвращает узел сцены, если таковой использовался для его создания).


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) 🔗

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

См. add_constant_torque().