PhysicsDirectSpaceState2D
Наследует: Object
Наследуется от: PhysicsDirectSpaceState2DExtension
Предоставляет прямой доступ к физическому пространству в PhysicsServer2D.
Описание
Предоставляет прямой доступ к физическому пространству в PhysicsServer2D. Используется в основном для выполнения запросов к объектам и областям, находящимся в заданном пространстве.
Примечание: Этот класс не предназначен для непосредственного создания экземпляра. Используйте World2D.direct_space_state, чтобы получить состояние физического 2D-пространства мира.
Обучающие материалы
Методы
cast_motion(parameters: PhysicsShapeQueryParameters2D) |
|
collide_shape(parameters: PhysicsShapeQueryParameters2D, max_results: int = 32) |
|
get_rest_info(parameters: PhysicsShapeQueryParameters2D) |
|
intersect_point(parameters: PhysicsPointQueryParameters2D, max_results: int = 32) |
|
intersect_ray(parameters: PhysicsRayQueryParameters2D) |
|
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, чтобы сократить время обработки.