PhysicsDirectSpaceState3D

Наследует: Object

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

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

Описание

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

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

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

Методы

PackedFloat32Array

cast_motion(parameters: PhysicsShapeQueryParameters3D)

Array[Vector3]

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

Dictionary

get_rest_info(parameters: PhysicsShapeQueryParameters3D)

Array[Dictionary]

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

Dictionary

intersect_ray(parameters: PhysicsRayQueryParameters3D)

Array[Dictionary]

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


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

PackedFloat32Array cast_motion(parameters: PhysicsShapeQueryParameters3D) 🔗

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

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

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


Array[Vector3] collide_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int = 32) 🔗

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

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

Примечание: Этот метод не учитывает свойство motion объекта.


Dictionary get_rest_info(parameters: PhysicsShapeQueryParameters3D) 🔗

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

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

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

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

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

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

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

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

Примечание: Этот метод не учитывает свойство motion объекта.


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

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

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

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

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

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

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


Dictionary intersect_ray(parameters: PhysicsRayQueryParameters3D) 🔗

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

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

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

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

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

face_index: индекс грани в точке пересечения.

Примечание: Возвращает допустимое число, только если пересекаемая фигура является ConcavePolygonShape3D. В противном случае возвращается -1.

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

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

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


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

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

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

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

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

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

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

Примечание: Этот метод не учитывает свойство motion объекта.