PhysicsDirectSpaceState2D

Наследует: Object

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

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

Описание

Предоставляет прямой доступ к физическому пространству в PhysicsServer2D. Используется в основном для выполнения запросов к объектам и областям, находящимся в заданном пространстве.

Примечание: Этот класс не предназначен для непосредственного создания экземпляра. Используйте World2D.direct_space_state, чтобы получить состояние физического 2D-пространства мира.

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

Методы

PackedFloat32Array

cast_motion(parameters: PhysicsShapeQueryParameters2D)

Array[Vector2]

collide_shape(parameters: PhysicsShapeQueryParameters2D, max_results: int = 32)

Dictionary

get_rest_info(parameters: PhysicsShapeQueryParameters2D)

Array[Dictionary]

intersect_point(parameters: PhysicsPointQueryParameters2D, max_results: int = 32)

Dictionary

intersect_ray(parameters: PhysicsRayQueryParameters2D)

Array[Dictionary]

intersect_shape(parameters: PhysicsShapeQueryParameters2D, max_results: int = 32)


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

PackedFloat32Array cast_motion(parameters: PhysicsShapeQueryParameters2D) 🔗

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

Возвращает массив с безопасными и небезопасными пропорциями (от 0 до 1) движения. Безопасная пропорция — это максимальная часть движения, которую можно выполнить без столкновений. Небезопасная пропорция — это минимальная часть расстояния, которое необходимо пройти для столкновения. Если столкновение не обнаружено, будет возвращен результат [1.0, 1.0].

Примечание: Любые Shape2D, с которыми фигура уже сталкивается, например, внутри, будут игнорироваться. Используйте collide_shape(), чтобы определить Shape2D, с которыми фигура уже сталкивается.


Array[Vector2] collide_shape(parameters: PhysicsShapeQueryParameters2D, max_results: int = 32) 🔗

Проверяет пересечения формы, заданной через объект PhysicsShapeQueryParameters2D, с пространством. Результирующий массив содержит список точек, где форма пересекает другую. Как и в случае с intersect_shape(), количество возвращаемых результатов может быть ограничено для экономии времени обработки.

Возвращаемые точки представляют собой список пар точек контакта. Для каждой пары первая находится в форме, переданной в объект PhysicsShapeQueryParameters2D, вторая находится в столкновенной форме из физического пространства.


Dictionary get_rest_info(parameters: PhysicsShapeQueryParameters2D) 🔗

Проверяет пересечения фигуры, заданной через объект PhysicsShapeQueryParameters2D, с пространством. Если она сталкивается с несколькими фигурами, выбирается ближайшая. Возвращаемый объект представляет собой словарь, содержащий следующие поля:

collider_id: идентификатор сталкивающегося объекта.

linear_velocity: скорость сталкивающегося объекта Vector2. Если объект является Area2D, результатом будет (0, 0).

normal: нормаль столкновения фигуры запроса в точке пересечения, направленная от пересекающегося объекта.

point: точка пересечения.

rid: RID пересекающегося объекта.

shape: индекс фигуры сталкивающейся фигуры.

Если фигура ничего не пересекает, то возвращается пустой словарь.


Array[Dictionary] intersect_point(parameters: PhysicsPointQueryParameters2D, max_results: int = 32) 🔗

Проверяет, находится ли точка внутри какой-либо сплошной фигуры. Положение и другие параметры определяются через PhysicsPointQueryParameters2D. Фигуры, внутри которых находится точка, возвращаются в массиве, содержащем словари со следующими полями:

collider: сталкивающийся объект.

collider_id: идентификатор сталкивающегося объекта.

rid: RID пересекающегося объекта.

shape: индекс формы сталкивающейся фигуры.

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

Примечание: ConcavePolygonShape2D и CollisionPolygon2D в режиме построения Segments не являются сплошными фигурами. Поэтому они не будут обнаружены.


Dictionary intersect_ray(parameters: PhysicsRayQueryParameters2D) 🔗

Пересекает луч в заданном пространстве. Положение луча и другие параметры определяются через PhysicsRayQueryParameters2D. Возвращаемый объект представляет собой словарь со следующими полями:

collider: сталкивающийся объект.

collider_id: идентификатор сталкивающегося объекта.

normal: нормаль поверхности объекта в точке пересечения или Vector2(0, 0), если луч начинается внутри фигуры и PhysicsRayQueryParameters2D.hit_from_inside равен true.

position: точка пересечения.

rid: RID пересекающегося объекта.

shape: индекс фигуры сталкивающейся фигуры.

Если луч ничего не пересек, то возвращается пустой словарь.


Array[Dictionary] intersect_shape(parameters: PhysicsShapeQueryParameters2D, max_results: int = 32) 🔗

Проверяет пересечения формы, заданной через объект PhysicsShapeQueryParameters2D, с пространством. Пересеченные формы возвращаются в массиве, содержащем словари со следующими полями:

collider: сталкивающийся объект.

collider_id: идентификатор сталкивающегося объекта.

rid: RID пересекающегося объекта.

shape: индекс формы сталкивающейся формы.

Количество пересечений можно ограничить параметром max_results, чтобы сократить время обработки.