Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
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, чтобы сократить время обработки.