PhysicsServer2D

Наследует: Object

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

Серверный интерфейс для низкоуровневого доступа к 2D-физике.

Описание

PhysicsServer2D — сервер, отвечающий за всю 2D-физику. Он может напрямую создавать и управлять всеми физическими объектами:

  • пространство — это самодостаточный мир для физического моделирования. Оно содержит тела, области и сочленения. Его состояние может быть запрошено для получения информации о столкновениях и пересечениях, и можно изменить несколько параметров моделирования.

  • форма — это геометрическая форма, такая как круг, прямоугольник, капсула или многоугольник. Ее можно использовать для обнаружения столкновений, добавив ее к телу/области, возможно, с дополнительным преобразованием относительно начала координат тела/области. Тела/области могут иметь несколько (преобразованных) форм, добавленных к ним, и одна форма может быть добавлена к телам/областям несколько раз с различными локальными преобразованиями.

  • тело — это физический объект, который может находиться в статическом, кинематическом или жестком режиме. Его состояние (такое как положение и скорость) можно запрашивать и обновлять. Обратный вызов интеграции силы может быть установлен для настройки физики тела.

  • область - это область в пространстве, которая может использоваться для обнаружения тел и областей, входящих и выходящих из нее. Обратный вызов мониторинга тела может быть установлен для сообщения о входе/выходе форм тела, и аналогичным образом может быть установлен обратный вызов мониторинга области. Гравитация и демпфирование могут быть переопределены в области путем установки параметров области.

  • соединение - это ограничение, либо между двумя телами, либо на одном теле относительно точки. Такие параметры, как смещение сочленения и остаточная длина пружинного соединения, могут быть скорректированы.

Физические объекты в PhysicsServer2D могут быть созданы и изменены независимо; они не должны быть привязаны к узлам в дереве сцены.

Примечание: Все узлы 2D-физики используют физический сервер внутренне. Добавление физического узла в дерево сцены приведет к созданию соответствующего физического объекта на физическом сервере. Узел твердого тела регистрирует обратный вызов, который обновляет преобразование узла с преобразованием соответствующего объекта тела на физическом сервере (каждое обновление физики). Узел области регистрирует обратный вызов, чтобы информировать узел области о перекрытиях с соответствующим объектом области на физическом сервере. Узел raycast запрашивает прямое состояние соответствующего пространства на физическом сервере.

Методы

void

area_add_shape(area: RID, shape: RID, transform: Transform2D = Transform2D(1, 0, 0, 1, 0, 0), disabled: bool = false)

void

area_attach_canvas_instance_id(area: RID, id: int)

void

area_attach_object_instance_id(area: RID, id: int)

void

area_clear_shapes(area: RID)

RID

area_create()

int

area_get_canvas_instance_id(area: RID) const

int

area_get_collision_layer(area: RID) const

int

area_get_collision_mask(area: RID) const

int

area_get_object_instance_id(area: RID) const

Variant

area_get_param(area: RID, param: AreaParameter) const

RID

area_get_shape(area: RID, shape_idx: int) const

int

area_get_shape_count(area: RID) const

Transform2D

area_get_shape_transform(area: RID, shape_idx: int) const

RID

area_get_space(area: RID) const

Transform2D

area_get_transform(area: RID) const

void

area_remove_shape(area: RID, shape_idx: int)

void

area_set_area_monitor_callback(area: RID, callback: Callable)

void

area_set_collision_layer(area: RID, layer: int)

void

area_set_collision_mask(area: RID, mask: int)

void

area_set_monitor_callback(area: RID, callback: Callable)

void

area_set_monitorable(area: RID, monitorable: bool)

void

area_set_param(area: RID, param: AreaParameter, value: Variant)

void

area_set_shape(area: RID, shape_idx: int, shape: RID)

void

area_set_shape_disabled(area: RID, shape_idx: int, disabled: bool)

void

area_set_shape_transform(area: RID, shape_idx: int, transform: Transform2D)

void

area_set_space(area: RID, space: RID)

void

area_set_transform(area: RID, transform: Transform2D)

void

body_add_collision_exception(body: RID, excepted_body: RID)

void

body_add_constant_central_force(body: RID, force: Vector2)

void

body_add_constant_force(body: RID, force: Vector2, position: Vector2 = Vector2(0, 0))

void

body_add_constant_torque(body: RID, torque: float)

void

body_add_shape(body: RID, shape: RID, transform: Transform2D = Transform2D(1, 0, 0, 1, 0, 0), disabled: bool = false)

void

body_apply_central_force(body: RID, force: Vector2)

void

body_apply_central_impulse(body: RID, impulse: Vector2)

void

body_apply_force(body: RID, force: Vector2, position: Vector2 = Vector2(0, 0))

void

body_apply_impulse(body: RID, impulse: Vector2, position: Vector2 = Vector2(0, 0))

void

body_apply_torque(body: RID, torque: float)

void

body_apply_torque_impulse(body: RID, impulse: float)

void

body_attach_canvas_instance_id(body: RID, id: int)

void

body_attach_object_instance_id(body: RID, id: int)

void

body_clear_shapes(body: RID)

RID

body_create()

int

body_get_canvas_instance_id(body: RID) const

int

body_get_collision_layer(body: RID) const

int

body_get_collision_mask(body: RID) const

float

body_get_collision_priority(body: RID) const

Vector2

body_get_constant_force(body: RID) const

float

body_get_constant_torque(body: RID) const

CCDMode

body_get_continuous_collision_detection_mode(body: RID) const

PhysicsDirectBodyState2D

body_get_direct_state(body: RID)

int

body_get_max_contacts_reported(body: RID) const

BodyMode

body_get_mode(body: RID) const

int

body_get_object_instance_id(body: RID) const

Variant

body_get_param(body: RID, param: BodyParameter) const

RID

body_get_shape(body: RID, shape_idx: int) const

int

body_get_shape_count(body: RID) const

Transform2D

body_get_shape_transform(body: RID, shape_idx: int) const

RID

body_get_space(body: RID) const

Variant

body_get_state(body: RID, state: BodyState) const

bool

body_is_omitting_force_integration(body: RID) const

void

body_remove_collision_exception(body: RID, excepted_body: RID)

void

body_remove_shape(body: RID, shape_idx: int)

void

body_reset_mass_properties(body: RID)

void

body_set_axis_velocity(body: RID, axis_velocity: Vector2)

void

body_set_collision_layer(body: RID, layer: int)

void

body_set_collision_mask(body: RID, mask: int)

void

body_set_collision_priority(body: RID, priority: float)

void

body_set_constant_force(body: RID, force: Vector2)

void

body_set_constant_torque(body: RID, torque: float)

void

body_set_continuous_collision_detection_mode(body: RID, mode: CCDMode)

void

body_set_force_integration_callback(body: RID, callable: Callable, userdata: Variant = null)

void

body_set_max_contacts_reported(body: RID, amount: int)

void

body_set_mode(body: RID, mode: BodyMode)

void

body_set_omit_force_integration(body: RID, enable: bool)

void

body_set_param(body: RID, param: BodyParameter, value: Variant)

void

body_set_shape(body: RID, shape_idx: int, shape: RID)

void

body_set_shape_as_one_way_collision(body: RID, shape_idx: int, enable: bool, margin: float)

void

body_set_shape_disabled(body: RID, shape_idx: int, disabled: bool)

void

body_set_shape_transform(body: RID, shape_idx: int, transform: Transform2D)

void

body_set_space(body: RID, space: RID)

void

body_set_state(body: RID, state: BodyState, value: Variant)

void

body_set_state_sync_callback(body: RID, callable: Callable)

bool

body_test_motion(body: RID, parameters: PhysicsTestMotionParameters2D, result: PhysicsTestMotionResult2D = null)

RID

capsule_shape_create()

RID

circle_shape_create()

RID

concave_polygon_shape_create()

RID

convex_polygon_shape_create()

float

damped_spring_joint_get_param(joint: RID, param: DampedSpringParam) const

void

damped_spring_joint_set_param(joint: RID, param: DampedSpringParam, value: float)

void

free_rid(rid: RID)

int

get_process_info(process_info: ProcessInfo)

void

joint_clear(joint: RID)

RID

joint_create()

void

joint_disable_collisions_between_bodies(joint: RID, disable: bool)

float

joint_get_param(joint: RID, param: JointParam) const

JointType

joint_get_type(joint: RID) const

bool

joint_is_disabled_collisions_between_bodies(joint: RID) const

void

joint_make_damped_spring(joint: RID, anchor_a: Vector2, anchor_b: Vector2, body_a: RID, body_b: RID = RID())

void

joint_make_groove(joint: RID, groove1_a: Vector2, groove2_a: Vector2, anchor_b: Vector2, body_a: RID = RID(), body_b: RID = RID())

void

joint_make_pin(joint: RID, anchor: Vector2, body_a: RID, body_b: RID = RID())

void

joint_set_param(joint: RID, param: JointParam, value: float)

bool

pin_joint_get_flag(joint: RID, flag: PinJointFlag) const

float

pin_joint_get_param(joint: RID, param: PinJointParam) const

void

pin_joint_set_flag(joint: RID, flag: PinJointFlag, enabled: bool)

void

pin_joint_set_param(joint: RID, param: PinJointParam, value: float)

RID

rectangle_shape_create()

RID

segment_shape_create()

RID

separation_ray_shape_create()

void

set_active(active: bool)

Variant

shape_get_data(shape: RID) const

ShapeType

shape_get_type(shape: RID) const

void

shape_set_data(shape: RID, data: Variant)

RID

space_create()

PhysicsDirectSpaceState2D

space_get_direct_state(space: RID)

float

space_get_param(space: RID, param: SpaceParameter) const

bool

space_is_active(space: RID) const

void

space_set_active(space: RID, active: bool)

void

space_set_param(space: RID, param: SpaceParameter, value: float)

RID

world_boundary_shape_create()


Перечисления

enum SpaceParameter: 🔗

SpaceParameter SPACE_PARAM_CONTACT_RECYCLE_RADIUS = 0

Константа для установки/получения максимального расстояния, на которое должна переместиться пара тел, прежде чем их статус столкновения придется пересчитать. Значение этого параметра по умолчанию — ProjectSettings.physics/2d/solver/contact_recycle_radius.

SpaceParameter SPACE_PARAM_CONTACT_MAX_SEPARATION = 1

Константа для установки/получения максимального расстояния между фигурами, на котором они могут находиться, прежде чем они будут считаться разделенными, а контакт будет отброшен. Значение этого параметра по умолчанию — ProjectSettings.physics/2d/solver/contact_max_separation.

SpaceParameter SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION = 2

Константа для установки/получения максимального расстояния, на которое фигура может проникнуть в другую фигуру, прежде чем это будет считаться столкновением. Значение этого параметра по умолчанию — ProjectSettings.physics/2d/solver/contact_max_allowed_penetration.

SpaceParameter SPACE_PARAM_CONTACT_DEFAULT_BIAS = 3

Константа для установки/получения смещения решателя по умолчанию для всех физических контактов. Смещение решателя — это фактор, контролирующий, насколько два объекта «отскакивают» после наложения, чтобы избежать их оставления в этом состоянии из-за числовой неточности. Значение этого параметра по умолчанию — ProjectSettings.physics/2d/solver/default_contact_bias.

SpaceParameter SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD = 4

Константа для установки/получения пороговой линейной скорости активности. Тело, отмеченное как потенциально неактивное как для линейной, так и для угловой скорости, будет переведено в спящий режим по истечении указанного времени. Значение этого параметра по умолчанию — ProjectSettings.physics/2d/sleep_threshold_linear.

SpaceParameter SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD = 5

Константа для установки/получения пороговой угловой скорости активности. Тело, отмеченное как потенциально неактивное как для линейной, так и для угловой скорости, будет переведено в спящий режим по истечении указанного времени. Значение этого параметра по умолчанию — ProjectSettings.physics/2d/sleep_threshold_angular.

SpaceParameter SPACE_PARAM_BODY_TIME_TO_SLEEP = 6

Константа для установки/получения максимального времени активности. Тело, отмеченное как потенциально неактивное как для линейной, так и для угловой скорости, будет переведено в спящий режим по истечении этого времени. Значение этого параметра по умолчанию — ProjectSettings.physics/2d/time_before_sleep.

SpaceParameter SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS = 7

Константа для установки/получения смещения решателя по умолчанию для всех физических ограничений. Смещение решателя — это фактор, контролирующий, насколько два объекта «отскакивают» после нарушения ограничения, чтобы не оставлять их в этом состоянии из-за числовой неточности. Значение этого параметра по умолчанию — ProjectSettings.physics/2d/solver/default_constraint_bias.

SpaceParameter SPACE_PARAM_SOLVER_ITERATIONS = 8

Константа для установки/получения количества итераций решателя для всех контактов и ограничений. Чем больше количество итераций, тем точнее будут столкновения. Однако большее количество итераций требует большей мощности ЦП, что может снизить производительность. Значение этого параметра по умолчанию — ProjectSettings.physics/2d/solver/solver_iterations.


enum ShapeType: 🔗

ShapeType SHAPE_WORLD_BOUNDARY = 0

Это константа для создания форм границ мира. Форма границ мира — это бесконечная линия с начальной точкой и нормалью. Таким образом, ее можно использовать для проверок спереди/сзади.

ShapeType SHAPE_SEPARATION_RAY = 1

Это константа для создания форм разделительного луча. Разделительный луч определяется длиной и отделяет себя от того, что касается его дальней конечной точки. Полезно для контроллеров персонажей.

ShapeType SHAPE_SEGMENT = 2

Это константа для создания сегментных форм. Сегментная форма — это конечная линия от точки A до точки B. Ее можно проверить на пересечения.

ShapeType SHAPE_CIRCLE = 3

Это константа для создания круговых форм. Круговая форма имеет только радиус. Ее можно использовать для пересечений и внутренних/внешних проверок.

ShapeType SHAPE_RECTANGLE = 4

Это константа для создания прямоугольных форм. Прямоугольная форма определяется шириной и высотой. Ее можно использовать для пересечений и внутренних/внешних проверок.

ShapeType SHAPE_CAPSULE = 5

Это константа для создания форм капсул. Форма капсулы определяется радиусом и длиной. Ее можно использовать для пересечений и внутренних/внешних проверок.

ShapeType SHAPE_CONVEX_POLYGON = 6

Это константа для создания выпуклых многоугольных фигур. Многоугольник определяется списком точек. Его можно использовать для пересечений и внутренних/внешних проверок.

ShapeType SHAPE_CONCAVE_POLYGON = 7

Это константа для создания вогнутых многоугольных фигур. Многоугольник определяется списком точек. Его можно использовать для проверки пересечений, но не для проверки внутри/снаружи.

ShapeType SHAPE_CUSTOM = 8

Эта константа используется внутри движка. Любая попытка создать такую форму приведет к ошибке.


enum AreaParameter: 🔗

AreaParameter AREA_PARAM_GRAVITY_OVERRIDE_MODE = 0

Константа для установки/получения режима переопределения гравитации в области. См. AreaSpaceOverrideMode для возможных значений. Значение этого параметра по умолчанию — AREA_SPACE_OVERRIDE_DISABLED.

AreaParameter AREA_PARAM_GRAVITY = 1

Константа для установки/получения силы гравитации в области. Значение этого параметра по умолчанию 9.80665.

AreaParameter AREA_PARAM_GRAVITY_VECTOR = 2

Константа для установки/получения вектора/центра гравитации в области. Значение этого параметра по умолчанию: Vector2(0, -1).

AreaParameter AREA_PARAM_GRAVITY_IS_POINT = 3

Константа для установки/получения того, является ли вектор гравитации области направлением или центральной точкой. Значение этого параметра по умолчанию — false.

AreaParameter AREA_PARAM_GRAVITY_POINT_UNIT_DISTANCE = 4

Константа для установки/получения расстояния, на котором сила гравитации равна силе гравитации, контролируемой AREA_PARAM_GRAVITY. Например, на планете радиусом 100 пикселей с поверхностной гравитацией 4,0 px/s² установите гравитацию 4,0 и единичное расстояние 100,0. Гравитация будет спадать в соответствии с законом обратных квадратов, поэтому в этом примере на расстоянии 200 пикселей от центра гравитация будет 1,0 px/s² (в два раза больше расстояния, 1/4 гравитации), на расстоянии 50 пикселей она будет 16,0 px/s² (в два раза больше расстояния, 4x гравитации) и т. д.

Вышеуказанное верно только тогда, когда единичное расстояние является положительным числом. Когда единичное расстояние установлено равным 0,0, гравитация будет постоянной независимо от расстояния. Значение этого параметра по умолчанию равно 0.0.

AreaParameter AREA_PARAM_LINEAR_DAMP_OVERRIDE_MODE = 5

Константа для установки/получения режима переопределения линейного затухания в области. См. AreaSpaceOverrideMode для возможных значений. Значение этого параметра по умолчанию — AREA_SPACE_OVERRIDE_DISABLED.

AreaParameter AREA_PARAM_LINEAR_DAMP = 6

Константа для установки/получения линейного коэффициента затухания области. Значение этого параметра по умолчанию 0.1.

AreaParameter AREA_PARAM_ANGULAR_DAMP_OVERRIDE_MODE = 7

Константа для установки/получения режима переопределения углового демпфирования в области. См. AreaSpaceOverrideMode для возможных значений. Значение этого параметра по умолчанию — AREA_SPACE_OVERRIDE_DISABLED.

AreaParameter AREA_PARAM_ANGULAR_DAMP = 8

Константа для установки/получения углового коэффициента затухания области. Значение этого параметра по умолчанию 1.0.

AreaParameter AREA_PARAM_PRIORITY = 9

Константа для установки/получения приоритета (порядка обработки) области. Значение этого параметра по умолчанию 0.


enum AreaSpaceOverrideMode: 🔗

AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_DISABLED = 0

Эта область не влияет на гравитацию/влажность. Это, как правило, области, которые существуют только для обнаружения столкновений и объектов, входящих или выходящих из них.

AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_COMBINE = 1

Эта область добавляет свои значения гравитации/влажности к тому, что было рассчитано до сих пор. Таким образом, многие перекрывающиеся области могут объединить свою физику, чтобы создать интересные эффекты.

AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_COMBINE_REPLACE = 2

Эта область добавляет свои значения гравитации/влажности ко всему, что было рассчитано до сих пор. Затем перестает учитывать остальные области, даже область по умолчанию.

AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_REPLACE = 3

Эта область заменяет любую гравитацию/влажность, даже заданную по умолчанию, и прекращает учитывать остальные области.

AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_REPLACE_COMBINE = 4

Эта область заменяет все рассчитанные до сих пор значения гравитации/влажности, но продолжает рассчитывать остальные области, вплоть до области по умолчанию.


enum BodyMode: 🔗

BodyMode BODY_MODE_STATIC = 0

Константа для статических тел. В этом режиме тело может перемещаться только пользовательским кодом и не сталкивается с другими телами на своем пути при перемещении.

BodyMode BODY_MODE_KINEMATIC = 1

Константа для кинематических тел. В этом режиме тело может перемещаться только пользовательским кодом и сталкиваться с другими телами на своем пути.

BodyMode BODY_MODE_RIGID = 2

Постоянная для твердых тел. В этом режиме тело может толкаться другими телами и к нему могут быть приложены силы.

BodyMode BODY_MODE_RIGID_LINEAR = 3

Постоянная для линейных твердых тел. В этом режиме тело не может вращаться, и только его линейная скорость подвержена влиянию внешних сил.


enum BodyParameter: 🔗

BodyParameter BODY_PARAM_BOUNCE = 0

Константа для установки/получения коэффициента отскока тела. Значение этого параметра по умолчанию 0.0.

BodyParameter BODY_PARAM_FRICTION = 1

Константа для установки/получения трения тела. Значение этого параметра по умолчанию 1.0.

BodyParameter BODY_PARAM_MASS = 2

Константа для установки/получения массы тела. Значение этого параметра по умолчанию — 1.0. Если режим тела установлен на BODY_MODE_RIGID, то установка этого параметра будет иметь следующие дополнительные эффекты:

  • Если параметр BODY_PARAM_CENTER_OF_MASS никогда не был задан явно, то значение этого параметра будет пересчитано на основе форм тела.

  • Если параметр BODY_PARAM_INERTIA установлен на значение <= 0.0, то значение этого параметра будет пересчитано на основе форм тела, массы и центра масс.

BodyParameter BODY_PARAM_INERTIA = 3

Константа для установки/получения инерции тела. Значение этого параметра по умолчанию 0.0. Если инерция тела установлена на значение <= 0.0, то инерция будет пересчитана на основе формы тела, массы и центра масс.

BodyParameter BODY_PARAM_CENTER_OF_MASS = 4

Константа для установки/получения положения центра масс тела в его локальной системе координат. Значение этого параметра по умолчанию — Vector2(0, 0). Если этот параметр не задан явно, он пересчитывается на основе формы тела при установке параметра BODY_PARAM_MASS или при вызове body_set_space().

BodyParameter BODY_PARAM_GRAVITY_SCALE = 5

Константа для установки/получения множителя гравитации тела. Значение этого параметра по умолчанию 1.0.

BodyParameter BODY_PARAM_LINEAR_DAMP_MODE = 6

Константа для установки/получения линейного режима демпфирования тела. См. BodyDampMode для возможных значений. Значение этого параметра по умолчанию — BODY_DAMP_MODE_COMBINE.

BodyParameter BODY_PARAM_ANGULAR_DAMP_MODE = 7

Константа для установки/получения режима углового демпфирования тела. См. BodyDampMode для возможных значений. Значение этого параметра по умолчанию — BODY_DAMP_MODE_COMBINE.

BodyParameter BODY_PARAM_LINEAR_DAMP = 8

Константа для установки/получения линейного коэффициента затухания тела. Значение этого параметра по умолчанию 0.0.

BodyParameter BODY_PARAM_ANGULAR_DAMP = 9

Константа для установки/получения углового коэффициента демпфирования тела. Значение этого параметра по умолчанию 0.0.

BodyParameter BODY_PARAM_MAX = 10

Представляет размер перечисления BodyParameter.


enum BodyDampMode: 🔗

BodyDampMode BODY_DAMP_MODE_COMBINE = 0

Значение демпфирования тела добавляется к любому значению, заданному в областях, или к значению по умолчанию.

BodyDampMode BODY_DAMP_MODE_REPLACE = 1

Значение демпфирования тела заменяет любое значение, заданное в областях, или значение по умолчанию.


enum BodyState: 🔗

BodyState BODY_STATE_TRANSFORM = 0

Константа для установки/получения текущей матрицы преобразования тела.

BodyState BODY_STATE_LINEAR_VELOCITY = 1

Константа для установки/получения текущей линейной скорости тела.

BodyState BODY_STATE_ANGULAR_VELOCITY = 2

Константа для установки/получения текущей угловой скорости тела.

BodyState BODY_STATE_SLEEPING = 3

Постоянно, чтобы заснуть/разбудить тело или узнать, спит ли оно.

BodyState BODY_STATE_CAN_SLEEP = 4

Константа для установки/получения информации о том, может ли тело спать.


enum JointType: 🔗

JointType JOINT_TYPE_PIN = 0

Константа для создания штифтовых соединений.

JointType JOINT_TYPE_GROOVE = 1

Константа для создания пазов.

JointType JOINT_TYPE_DAMPED_SPRING = 2

Константа для создания демпфирующих пружинных соединений.

JointType JOINT_TYPE_MAX = 3

Представляет размер перечисления JointType.


enum JointParam: 🔗

JointParam JOINT_PARAM_BIAS = 0

Константа для установки/получения того, насколько быстро сочленение тянет тела назад, чтобы удовлетворить ограничение сочленения. Чем ниже значение, тем больше два тела могут тянуть сочленение. Значение этого параметра по умолчанию — 0.0.

Примечание: В физике Godot этот параметр используется только для штифтовых и пазовых соединений.

JointParam JOINT_PARAM_MAX_BIAS = 1

Константа для установки/получения максимальной скорости, с которой сочленение может применять исправления. Значение этого параметра по умолчанию — 3.40282e+38.

Примечание: В физике Godot этот параметр используется только для сочленений с канавками.

JointParam JOINT_PARAM_MAX_FORCE = 2

Константа для установки/получения максимальной силы, которую может использовать соединение для воздействия на два тела. Значение этого параметра по умолчанию — 3.40282e+38.

Примечание: В физике Годо этот параметр используется только для пазов.


enum PinJointParam: 🔗

PinJointParam PIN_JOINT_SOFTNESS = 0

Константа для установки/получения того, насколько может изгибаться соединение штифтового соединения. Значение этого параметра по умолчанию — 0.0.

PinJointParam PIN_JOINT_LIMIT_UPPER = 1

Максимальное вращение вокруг штифта.

PinJointParam PIN_JOINT_LIMIT_LOWER = 2

Минимальное вращение вокруг штифта.

PinJointParam PIN_JOINT_MOTOR_TARGET_VELOCITY = 3

Целевая скорость двигателя. В радианах в секунду.


enum PinJointFlag: 🔗

PinJointFlag PIN_JOINT_FLAG_ANGULAR_LIMIT_ENABLED = 0

Если true, штифт имеет максимальное и минимальное вращение.

PinJointFlag PIN_JOINT_FLAG_MOTOR_ENABLED = 1

Если true, двигатель поворачивает штифт.


enum DampedSpringParam: 🔗

DampedSpringParam DAMPED_SPRING_REST_LENGTH = 0

Устанавливает длину покоя пружинного соединения. Соединение всегда будет пытаться вернуться на эту длину при раздвижении. Значение этого параметра по умолчанию — расстояние между точками крепления соединения.

DampedSpringParam DAMPED_SPRING_STIFFNESS = 1

Устанавливает жесткость пружинного соединения. Соединение прикладывает силу, равную жесткости, умноженной на расстояние от его длины покоя. Значение этого параметра по умолчанию — 20.0.

DampedSpringParam DAMPED_SPRING_DAMPING = 2

Устанавливает коэффициент демпфирования пружинного соединения. Значение 0 указывает на недемпфированную пружину, а значение 1 заставляет систему достигать равновесия как можно быстрее (критическое демпфирование). Значение этого параметра по умолчанию — 1.5.


enum CCDMode: 🔗

CCDMode CCD_MODE_DISABLED = 0

Отключает непрерывное обнаружение столкновений. Это самый быстрый способ обнаружения столкновений тел, но он может пропустить небольшие и/или быстро движущиеся объекты.

CCDMode CCD_MODE_CAST_RAY = 1

Позволяет непрерывно обнаруживать столкновения с помощью raycasting. Это быстрее, чем shapecasting, но менее точно.

CCDMode CCD_MODE_CAST_SHAPE = 2

Позволяет непрерывно обнаруживать столкновения с помощью шейпкастинга. Это самый медленный метод ПЗС, но и самый точный.


enum AreaBodyStatus: 🔗

AreaBodyStatus AREA_BODY_ADDED = 0

Значение первого параметра и функция обратного вызова области получает, когда объект входит в одну из ее фигур.

AreaBodyStatus AREA_BODY_REMOVED = 1

Значение первого параметра и функция обратного вызова области получает, когда объект выходит из одной из своих фигур.


enum ProcessInfo: 🔗

ProcessInfo INFO_ACTIVE_OBJECTS = 0

Константа для получения количества объектов, которые не спят.

ProcessInfo INFO_COLLISION_PAIRS = 1

Константа для получения количества возможных столкновений.

ProcessInfo INFO_ISLAND_COUNT = 2

Константа для получения количества областей пространства, где может произойти столкновение.


Описания метода

void area_add_shape(area: RID, shape: RID, transform: Transform2D = Transform2D(1, 0, 0, 1, 0, 0), disabled: bool = false) 🔗

Добавляет фигуру к области с заданным локальным преобразованием. Фигура (вместе со своими свойствами transform и disabled) добавляется в массив фигур, а фигуры области обычно ссылаются по их индексу в этом массиве.


void area_attach_canvas_instance_id(area: RID, id: int) 🔗

Прикрепляет ObjectID холста к области. Используйте Object.get_instance_id(), чтобы получить ObjectID для CanvasLayer.


void area_attach_object_instance_id(area: RID, id: int) 🔗

Прикрепляет ObjectID Object к области. Используйте Object.get_instance_id(), чтобы получить ObjectID для CollisionObject2D.


void area_clear_shapes(area: RID) 🔗

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


RID area_create() 🔗

Создает объект 2D-области на физическом сервере и возвращает RID, который его идентифицирует. Настройки по умолчанию для созданной области включают слой столкновений и маску, установленные на 1, и monitorable, установленные на false.

Используйте area_add_shape(), чтобы добавить к нему формы, используйте area_set_transform(), чтобы задать его преобразование, и используйте area_set_space(), чтобы добавить область в пространство. Если вы хотите, чтобы область была обнаруживаемой, используйте area_set_monitorable().


int area_get_canvas_instance_id(area: RID) const 🔗

Возвращает ObjectID холста, прикрепленного к области. Используйте @GlobalScope.instance_from_id(), чтобы получить CanvasLayer из ненулевого ObjectID.


int area_get_collision_layer(area: RID) const 🔗

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


int area_get_collision_mask(area: RID) const 🔗

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


int area_get_object_instance_id(area: RID) const 🔗

Возвращает ObjectID, прикрепленный к области. Используйте @GlobalScope.instance_from_id(), чтобы извлечь Object из ненулевого ObjectID.


Variant area_get_param(area: RID, param: AreaParameter) const 🔗

Возвращает значение заданного параметра площади.


RID area_get_shape(area: RID, shape_idx: int) const 🔗

Возвращает RID фигуры с указанным индексом в массиве фигур области.


int area_get_shape_count(area: RID) const 🔗

Возвращает количество фигур, добавленных в область.


Transform2D area_get_shape_transform(area: RID, shape_idx: int) const 🔗

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


RID area_get_space(area: RID) const 🔗

Возвращает RID пространства, назначенного области. Возвращает пустой RID, если пространство не назначено.


Transform2D area_get_transform(area: RID) const 🔗

Возвращает матрицу преобразования области.


void area_remove_shape(area: RID, shape_idx: int) 🔗

Удаляет фигуру с указанным индексом из массива фигур области. Сама фигура не удаляется, поэтому ее можно использовать в другом месте или добавить обратно позже. В результате этой операции у фигур области, которые имели индексы выше shape_idx, индекс будет уменьшен на единицу.


void area_set_area_monitor_callback(area: RID, callback: Callable) 🔗

Устанавливает обратный вызов монитора области. Этот обратный вызов будет вызван, когда любая другая (форма) области входит или выходит из (формы) заданной области, и должен принимать следующие пять параметров:

  1. целое число status: либо AREA_BODY_ADDED или AREA_BODY_REMOVED в зависимости от того, вошла или вышла из области форма другой области,

  2. RID area_rid: RID другой области, которая вошла или вышла из области,

  3. целое число instance_id: ObjectID, прикрепленный к другой области,

  4. целое число area_shape_idx: индекс формы другой области, которая вошла или вышла из области,

  5. целое число self_shape_idx: индекс формы области, в которую вошла или вышла другая область.

Подсчитывая (или отслеживая) входящие и выходящие фигуры, можно определить, входит ли область (со всеми ее фигурами) в первый раз или выходит в последний раз.


void area_set_collision_layer(area: RID, layer: int) 🔗

Назначает область одному или нескольким физическим слоям с помощью битовой маски.


void area_set_collision_mask(area: RID, mask: int) 🔗

Устанавливает, какие физические слои будет отслеживать область, с помощью битовой маски.


void area_set_monitor_callback(area: RID, callback: Callable) 🔗

Устанавливает обратный вызов монитора тела области. Этот обратный вызов будет вызван, когда любое другое (форма) тело входит или выходит (форма) из заданной области, и должен принимать следующие пять параметров:

  1. целое число status: либо AREA_BODY_ADDED или AREA_BODY_REMOVED в зависимости от того, вошла или вышла из области другая форма тела,

  2. RID body_rid: RID тела, которое вошло или вышло из области,

  3. целое число instance_id: ObjectID, прикрепленный к телу,

  4. целое число body_shape_idx: индекс формы тела, которое вошло или вышло из области,

  5. целое число self_shape_idx: индекс формы области, в которую тело вошло или вышло.

Подсчитывая (или отслеживая) входящие и выходящие формы, можно определить, входит ли тело (со всеми его формами) в первый раз или выходит в последний раз.


void area_set_monitorable(area: RID, monitorable: bool) 🔗

Устанавливает, является ли область контролируемой или нет. Если monitorable имеет значение true, обратный вызов мониторинга области других областей будет вызван, когда эта область входит в них или выходит из них.


void area_set_param(area: RID, param: AreaParameter, value: Variant) 🔗

Устанавливает значение заданного параметра области.


void area_set_shape(area: RID, shape_idx: int, shape: RID) 🔗

Заменяет форму области по указанному индексу на другую форму, не влияя на свойства transform и disabled по тому же индексу.


void area_set_shape_disabled(area: RID, shape_idx: int, disabled: bool) 🔗

Устанавливает отключенное свойство формы области с заданным индексом. Если disabled равен true, то форма не будет обнаруживать никакие другие формы, входящие или выходящие из нее.


void area_set_shape_transform(area: RID, shape_idx: int, transform: Transform2D) 🔗

Задает матрицу локального преобразования формы области с заданным индексом.


void area_set_space(area: RID, space: RID) 🔗

Добавляет область к указанному пространству после удаления области из ранее назначенного пространства (если таковое имеется).

Примечание: Чтобы удалить область из пространства без немедленного добавления ее обратно в другое место, используйте PhysicsServer2D.area_set_space(area, RID()).


void area_set_transform(area: RID, transform: Transform2D) 🔗

Задает матрицу преобразования области.


void body_add_collision_exception(body: RID, excepted_body: RID) 🔗

Добавляет exceptioned_body в список исключений столкновений тела, чтобы столкновения с ним игнорировались.


void body_add_constant_central_force(body: RID, force: Vector2) 🔗

Добавляет постоянную направленную силу к телу. Сила не влияет на вращение. Сила остается приложенной с течением времени, пока не будет очищена с помощью PhysicsServer2D.body_set_constant_force(body, Vector2(0, 0)).

Это эквивалентно использованию body_add_constant_force() в центре масс тела.


void body_add_constant_force(body: RID, force: Vector2, position: Vector2 = Vector2(0, 0)) 🔗

Добавляет постоянную позиционную силу к телу. Сила может влиять на вращение, если position отличается от центра масс тела. Сила остается приложенной с течением времени, пока не будет очищена с помощью PhysicsServer2D.body_set_constant_force(body, Vector2(0, 0)).

position — это смещение от начала координат тела в глобальных координатах.


void body_add_constant_torque(body: RID, torque: float) 🔗

Добавляет постоянную вращательную силу к телу. Сила не влияет на положение. Сила остается приложенной с течением времени, пока не будет очищена с помощью PhysicsServer2D.body_set_constant_torque(body, 0).


void body_add_shape(body: RID, shape: RID, transform: Transform2D = Transform2D(1, 0, 0, 1, 0, 0), disabled: bool = false) 🔗

Добавляет фигуру к области с заданным локальным преобразованием. Фигура (вместе со своими свойствами transform и disabled) добавляется в массив фигур, а фигуры тела обычно ссылаются по их индексу в этом массиве.


void body_apply_central_force(body: RID, force: Vector2) 🔗

Применяет направленную силу к телу в центре масс тела. Сила не влияет на вращение. Сила зависит от времени и должна применяться при каждом обновлении физики.

Это эквивалентно использованию body_apply_force() в центре масс тела.


void body_apply_central_impulse(body: RID, impulse: Vector2) 🔗

Применяет направленный импульс к телу в центре масс тела. Импульс не влияет на вращение.

Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_force").

Это эквивалентно использованию body_apply_impulse() в центре масс тела.


void body_apply_force(body: RID, force: Vector2, position: Vector2 = Vector2(0, 0)) 🔗

Применяет позиционированную силу к телу. Сила может влиять на вращение, если position отличается от центра масс тела. Сила зависит от времени и должна применяться при каждом обновлении физики.

position — это смещение от начала координат тела в глобальных координатах.


void body_apply_impulse(body: RID, impulse: Vector2, position: Vector2 = Vector2(0, 0)) 🔗

Применяет позиционированный импульс к телу. Импульс может влиять на вращение, если position отличается от центра масс тела.

Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_force").

position — это смещение от начала координат тела в глобальных координатах.


void body_apply_torque(body: RID, torque: float) 🔗

Применяет вращательную силу к телу. Сила не влияет на положение. Сила зависит от времени и должна применяться при каждом обновлении физики.


void body_apply_torque_impulse(body: RID, impulse: float) 🔗

Применяет вращательный импульс к телу. Импульс не влияет на положение.

Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_force").


void body_attach_canvas_instance_id(body: RID, id: int) 🔗

Прикрепляет ObjectID холста к телу. Используйте Object.get_instance_id(), чтобы получить ObjectID CanvasLayer.


void body_attach_object_instance_id(body: RID, id: int) 🔗

Прикрепляет ObjectID, из Object, к телу. Используйте Object.get_instance_id(), чтобы получить ObjectID CollisionObject2D.


void body_clear_shapes(body: RID) 🔗

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


RID body_create() 🔗

Создает объект 2D-тела на физическом сервере и возвращает RID, который его идентифицирует. Настройки по умолчанию для созданной области включают слой столкновения и маску, установленные на 1, и режим тела, установленный на BODY_MODE_RIGID.

Используйте body_add_shape(), чтобы добавить к нему формы, используйте body_set_state(), чтобы задать его преобразование, и используйте body_set_space(), чтобы добавить тело в пространство.


int body_get_canvas_instance_id(body: RID) const 🔗

Возвращает ObjectID холста, прикрепленного к телу. Используйте @GlobalScope.instance_from_id(), чтобы получить CanvasLayer из ненулевого ObjectID.


int body_get_collision_layer(body: RID) const 🔗

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


int body_get_collision_mask(body: RID) const 🔗

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


float body_get_collision_priority(body: RID) const 🔗

Возвращает приоритет столкновения тела. Используется в фазе депенетирования body_test_motion(). Чем выше приоритет, тем ниже будет проникновение в тело.


Vector2 body_get_constant_force(body: RID) const 🔗

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

См. body_add_constant_force() и body_add_constant_central_force().


float body_get_constant_torque(body: RID) const 🔗

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

См. body_add_constant_torque().


CCDMode body_get_continuous_collision_detection_mode(body: RID) const 🔗

Возвращает режим непрерывного обнаружения столкновений тела.


PhysicsDirectBodyState2D body_get_direct_state(body: RID) 🔗

Возвращает PhysicsDirectBodyState2D тела. Возвращает null, если тело уничтожено или не назначено пространству.


int body_get_max_contacts_reported(body: RID) const 🔗

Возвращает максимальное количество контактов, о которых может сообщить тело. См. body_set_max_contacts_reported().


BodyMode body_get_mode(body: RID) const 🔗

Возвращает режим тела.


int body_get_object_instance_id(body: RID) const 🔗

Возвращает ObjectID, прикрепленный к телу. Используйте @GlobalScope.instance_from_id(), чтобы извлечь Object из ненулевого ObjectID.


Variant body_get_param(body: RID, param: BodyParameter) const 🔗

Возвращает значение указанного параметра тела.


RID body_get_shape(body: RID, shape_idx: int) const 🔗

Возвращает RID фигуры с указанным индексом в массиве фигур тела.


int body_get_shape_count(body: RID) const 🔗

Возвращает количество фигур, добавленных к телу.


Transform2D body_get_shape_transform(body: RID, shape_idx: int) const 🔗

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


RID body_get_space(body: RID) const 🔗

Возвращает RID пространства, назначенного телу. Возвращает пустой RID, если пространство не назначено.


Variant body_get_state(body: RID, state: BodyState) const 🔗

Возвращает значение заданного состояния тела.


bool body_is_omitting_force_integration(body: RID) const 🔗

Возвращает true, если тело пропускает стандартную интеграцию силы. См. body_set_omit_force_integration().


void body_remove_collision_exception(body: RID, excepted_body: RID) 🔗

Удаляет exceptioned_body из списка исключений столкновений тела, так что столкновения с ним больше не игнорируются.


void body_remove_shape(body: RID, shape_idx: int) 🔗

Удаляет фигуру с указанным индексом из массива фигур тела. Сама фигура не удаляется, поэтому ее можно использовать в другом месте или добавить обратно позже. В результате этой операции у фигур тела, которые имели индексы выше shape_idx, индекс будет уменьшен на единицу.


void body_reset_mass_properties(body: RID) 🔗

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


void body_set_axis_velocity(body: RID, axis_velocity: Vector2) 🔗

Изменяет линейную скорость тела таким образом, что ее проекция на ось axis_velocity.normalized() равна в точности axis_velocity.length(). Это полезно для прыжкового поведения.


void body_set_collision_layer(body: RID, layer: int) 🔗

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


void body_set_collision_mask(body: RID, mask: int) 🔗

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


void body_set_collision_priority(body: RID, priority: float) 🔗

Устанавливает приоритет столкновения тела. Используется в фазе депенетирования body_test_motion(). Чем выше приоритет, тем ниже будет проникновение в тело.


void body_set_constant_force(body: RID, force: Vector2) 🔗

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

См. body_add_constant_force() и body_add_constant_central_force().


void body_set_constant_torque(body: RID, torque: float) 🔗

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

См. body_add_constant_torque().


void body_set_continuous_collision_detection_mode(body: RID, mode: CCDMode) 🔗

Устанавливает режим непрерывного обнаружения столкновений.

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


void body_set_force_integration_callback(body: RID, callable: Callable, userdata: Variant = null) 🔗

Устанавливает функцию обратного вызова интегрирования силы тела на callable. Используйте пустой Callable (Callable()), чтобы очистить пользовательский обратный вызов.

Функция callable будет вызываться каждый физический тик перед стандартным интегрированием силы (см. body_set_omit_force_integration()). Ее можно использовать, например, для обновления линейной и угловой скорости тела на основе контакта с другими телами.

Если userdata не является null, функция callable должна принимать следующие два параметра:

  1. state: PhysicsDirectBodyState2D, используемый для получения и изменения состояния тела,

  2. userdata: Variant; ее значением будет userdata, переданный в этот метод.

Если userdata равен null, то callable должен принимать только параметр state.


void body_set_max_contacts_reported(body: RID, amount: int) 🔗

Устанавливает максимальное количество контактов, о которых может сообщить тело. Если amount больше нуля, то тело будет отслеживать не более этого количества контактов с другими телами.


void body_set_mode(body: RID, mode: BodyMode) 🔗

Устанавливает режим тела.


void body_set_omit_force_integration(body: RID, enable: bool) 🔗

Устанавливает, будет ли тело пропускать стандартную интеграцию силы. Если enable равно true, тело не будет автоматически использовать приложенные силы, крутящие моменты и демпфирование для обновления линейной и угловой скорости тела. В этом случае body_set_force_integration_callback() можно использовать для ручного обновления линейной и угловой скорости.

Этот метод вызывается, когда задано свойство RigidBody2D.custom_integrator.


void body_set_param(body: RID, param: BodyParameter, value: Variant) 🔗

Устанавливает значение указанного параметра тела.


void body_set_shape(body: RID, shape_idx: int, shape: RID) 🔗

Заменяет форму тела по указанному индексу на другую форму, не влияя на свойства transform, disabled и одностороннего столкновения по тому же индексу.


void body_set_shape_as_one_way_collision(body: RID, shape_idx: int, enable: bool, margin: float) 🔗

Устанавливает свойства одностороннего столкновения формы тела с заданным индексом. Если enable равен true, направление одностороннего столкновения, заданное локальной восходящей осью формы body_get_shape_transform(body, shape_idx).y, будет использоваться для игнорирования столкновений с формой в противоположном направлении и для обеспечения того, чтобы депенетрация кинематических тел происходила в этом направлении.


void body_set_shape_disabled(body: RID, shape_idx: int, disabled: bool) 🔗

Устанавливает отключенное свойство формы тела с заданным индексом. Если disabled равен true, то форма будет игнорироваться при всех обнаружениях столкновений.


void body_set_shape_transform(body: RID, shape_idx: int, transform: Transform2D) 🔗

Задает локальную матрицу преобразования формы тела с заданным индексом.


void body_set_space(body: RID, space: RID) 🔗

Добавляет тело в заданное пространство после удаления тела из ранее назначенного пространства (если оно есть). Если режим тела установлен на BODY_MODE_RIGID, то добавление тела в пространство будет иметь следующие дополнительные эффекты:

  • Если параметр BODY_PARAM_CENTER_OF_MASS никогда не был задан явно, то значение этого параметра будет пересчитано на основе форм тела.

  • Если параметр BODY_PARAM_INERTIA установлен на значение <= 0.0, то значение этого параметра будет пересчитано на основе форм тела, массы и центра масс.

Примечание: Чтобы удалить тело из пространства, не добавляя его обратно в другое место, используйте PhysicsServer2D.body_set_space(body, RID()).


void body_set_state(body: RID, state: BodyState, value: Variant) 🔗

Устанавливает значение состояния тела.

Примечание: Изменение состояния не вступает в силу немедленно. Состояние изменится в следующем физическом кадре.


void body_set_state_sync_callback(body: RID, callable: Callable) 🔗

Устанавливает функцию обратного вызова синхронизации состояния тела на callable. Используйте пустой Callable (Callable()), чтобы очистить обратный вызов.

Функция callable будет вызываться каждый физический кадр, предполагая, что тело было активно во время предыдущего физического тика, и может использоваться для получения последнего состояния с физического сервера.

Функция callable должна принимать следующие параметры:

  1. state: PhysicsDirectBodyState2D, используемый для получения состояния тела.


bool body_test_motion(body: RID, parameters: PhysicsTestMotionParameters2D, result: PhysicsTestMotionResult2D = null) 🔗

Возвращает true, если столкновение возникнет в результате перемещения тела по вектору движения из заданной точки в пространстве. См. PhysicsTestMotionParameters2D для доступных параметров движения. При желании можно передать объект PhysicsTestMotionResult2D, который будет использоваться для хранения информации о полученном столкновении.


RID capsule_shape_create() 🔗

Создает форму капсулы 2D на физическом сервере и возвращает RID, который ее идентифицирует. Используйте shape_set_data(), чтобы задать высоту и радиус капсулы.


RID circle_shape_create() 🔗

Создает 2D-круг на физическом сервере и возвращает RID, который его идентифицирует. Используйте shape_set_data(), чтобы задать радиус круга.


RID concave_polygon_shape_create() 🔗

Создает 2D вогнутую многоугольную форму на физическом сервере и возвращает RID, который ее идентифицирует. Используйте shape_set_data(), чтобы задать сегменты вогнутого многоугольника.


RID convex_polygon_shape_create() 🔗

Создает 2D выпуклую многоугольную форму на физическом сервере и возвращает RID, который ее идентифицирует. Используйте shape_set_data() для установки точек выпуклого многоугольника.


float damped_spring_joint_get_param(joint: RID, param: DampedSpringParam) const 🔗

Возвращает значение заданного параметра демпфированного пружинного соединения (spring joint).


void damped_spring_joint_set_param(joint: RID, param: DampedSpringParam, value: float) 🔗

Устанавливает значение заданного параметра демпфированного пружинного соединения (spring joint).


void free_rid(rid: RID) 🔗

Уничтожает любой из объектов, созданных PhysicsServer2D. Если переданный RID не является одним из объектов, которые могут быть созданы PhysicsServer2D, на консоль будет выведена ошибка.


int get_process_info(process_info: ProcessInfo) 🔗

Возвращает значение состояния физического движка, заданное process_info.


void joint_clear(joint: RID) 🔗

Уничтожает соединение с указанным RID, создает новое неинициализированное соединение и заставляет RID ссылаться на это новое соединение.


RID joint_create() 🔗

Создает 2D-соединение на физическом сервере и возвращает RID, который его идентифицирует. Чтобы задать тип соединения, используйте joint_make_damped_spring(), joint_make_groove() или joint_make_pin(). Используйте joint_set_param() для задания общих параметров соединения.


void joint_disable_collisions_between_bodies(joint: RID, disable: bool) 🔗

Устанавливает, будут ли тела, прикрепленные к Joint2D, сталкиваться друг с другом.


float joint_get_param(joint: RID, param: JointParam) const 🔗

Возвращает значение указанного параметра соединения.


JointType joint_get_type(joint: RID) const 🔗

Возвращает тип соединения.


bool joint_is_disabled_collisions_between_bodies(joint: RID) const 🔗

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


void joint_make_damped_spring(joint: RID, anchor_a: Vector2, anchor_b: Vector2, body_a: RID, body_b: RID = RID()) 🔗

Делает сочленение демпфированным пружинным сочленением, прикрепленным в точке anchor_a (заданной в глобальных координатах) на теле body_a и в точке anchor_b (заданной в глобальных координатах) на теле body_b. Чтобы задать параметры, специфичные для демпфированной пружины, см. damped_spring_joint_set_param().


void joint_make_groove(joint: RID, groove1_a: Vector2, groove2_a: Vector2, anchor_b: Vector2, body_a: RID = RID(), body_b: RID = RID()) 🔗

Делает соединение пазовым.


void joint_make_pin(joint: RID, anchor: Vector2, body_a: RID, body_b: RID = RID()) 🔗

Делает сочленение штифтовым. Если body_b — пустой RID, то body_a прикрепляется к точке anchor (заданной в глобальных координатах); в противном случае body_a прикрепляется к body_b в точке anchor (заданной в глобальных координатах). Чтобы задать параметры, специфичные для штифтового сочленения, см. pin_joint_set_param().


void joint_set_param(joint: RID, param: JointParam, value: float) 🔗

Устанавливает значение указанного параметра соединения.


bool pin_joint_get_flag(joint: RID, flag: PinJointFlag) const 🔗

Получает флаг штифтового соединения (pin joint).


float pin_joint_get_param(joint: RID, param: PinJointParam) const 🔗

Возвращает значение параметра штифтового соединения (pin joint).


void pin_joint_set_flag(joint: RID, flag: PinJointFlag, enabled: bool) 🔗

Устанавливает флаг штифтового соединения (pin joint).


void pin_joint_set_param(joint: RID, param: PinJointParam, value: float) 🔗

Устанавливает параметр штифтового соединения.


RID rectangle_shape_create() 🔗

Создает 2D-прямоугольную форму на физическом сервере и возвращает RID, который ее идентифицирует. Используйте shape_set_data(), чтобы задать половинные размеры прямоугольника.


RID segment_shape_create() 🔗

Создает форму 2D-сегмента на физическом сервере и возвращает RID, который его идентифицирует. Используйте shape_set_data(), чтобы задать начальную и конечную точки сегмента.


RID separation_ray_shape_create() 🔗

Создает форму луча разделения 2D на физическом сервере и возвращает RID, который ее идентифицирует. Используйте shape_set_data(), чтобы задать свойства формы length и slide_on_slope.


void set_active(active: bool) 🔗

Активирует или деактивирует сервер 2D-физики. Если active равен false, то сервер физики не будет ничего делать на своем шаге физики.


Variant shape_get_data(shape: RID) const 🔗

Возвращает данные формы, которые определяют конфигурацию формы, например, полупространства прямоугольника или сегменты вогнутой формы. См. shape_set_data() для точного формата этих данных в каждом случае.


ShapeType shape_get_type(shape: RID) const 🔗

Возвращает тип фигуры.


void shape_set_data(shape: RID, data: Variant) 🔗

Устанавливает данные формы, которые определяют конфигурацию формы. data, которые необходимо передать, зависят от типа формы (см. shape_get_type()):

  • SHAPE_WORLD_BOUNDARY: массив длины два, содержащий направление Vector2 normal и расстояние float d,

  • SHAPE_SEPARATION_RAY: словарь, содержащий ключ length со значением float и ключ slide_on_slope со значением bool,

  • SHAPE_SEGMENT: Rect2 rect, содержащий первую точку сегмента в rect.position и вторую точку сегмента в rect.size,

  • SHAPE_CIRCLE: float radius,

  • SHAPE_RECTANGLE: Vector2 half_extents,

  • SHAPE_CAPSULE: массив длиной два (или Vector2), содержащий float height (высоту) и float radius (радиус),

  • SHAPE_CONVEX_POLYGON: либо PackedVector2Array точек, определяющих выпуклый многоугольник в порядке против часовой стрелки (внешняя нормаль по часовой стрелке каждого сегмента, образованного последовательными точками, вычисляется внутренне), либо PackedFloat32Array длины, кратной четырем, так что каждый кортеж из 4 float содержит координаты точки, за которыми следуют координаты вектора внешней нормали по часовой стрелке к сегменту между текущей точкой и следующей точкой,

  • SHAPE_CONCAVE_POLYGON: PackedVector2Array длины, делящейся на два (каждая пара точек образует один сегмент).

Предупреждение: В случае SHAPE_CONVEX_POLYGON этот метод не проверяет, действительно ли предоставленные точки образуют выпуклый многоугольник (в отличие от свойства CollisionPolygon2D.polygon).


RID space_create() 🔗

Создает 2D-пространство на физическом сервере и возвращает RID, который его идентифицирует. Пространство содержит тела и области и управляет пошаговым выполнением физической симуляции объектов в нем.


PhysicsDirectSpaceState2D space_get_direct_state(space: RID) 🔗

Возвращает состояние пространства, PhysicsDirectSpaceState2D. Этот объект может использоваться для запросов на столкновение/пересечение.


float space_get_param(space: RID, param: SpaceParameter) const 🔗

Возвращает значение указанного параметра пространства.


bool space_is_active(space: RID) const 🔗

Возвращает true, если пространство активно.


void space_set_active(space: RID, active: bool) 🔗

Активирует или деактивирует пространство. Если active равен false, то физический сервер не будет ничего делать с этим пространством на своем физическом шаге.


void space_set_param(space: RID, param: SpaceParameter, value: float) 🔗

Устанавливает значение указанного параметра пространства.


RID world_boundary_shape_create() 🔗

Создает форму границы 2D-мира на физическом сервере и возвращает RID, который ее идентифицирует. Используйте shape_set_data(), чтобы задать нормальное направление формы и свойства расстояния.