:github_url: hide .. _class_PhysicsDirectSpaceState3D: PhysicsDirectSpaceState3D ========================= **Наследует:** :ref:`Object` **Наследуется от:** :ref:`PhysicsDirectSpaceState3DExtension` Предоставляет прямой доступ к физическому пространству в :ref:`PhysicsServer3D`. .. rst-class:: classref-introduction-group Описание ---------------- Предоставляет прямой доступ к физическому пространству в :ref:`PhysicsServer3D`. Используется в основном для выполнения запросов к объектам и областям, находящимся в заданном пространстве. \ **Примечание:** Этот класс не предназначен для непосредственного создания экземпляра. Используйте :ref:`World3D.direct_space_state`, чтобы получить состояние физического трехмерного пространства мира. .. rst-class:: classref-introduction-group Обучающие материалы -------------------------------------- - :doc:`Введение в физику <../tutorials/physics/physics_introduction>` - :doc:`Трассировка лучей <../tutorials/physics/ray-casting>` .. rst-class:: classref-reftable-group Методы ------------ .. table:: :widths: auto +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedFloat32Array` | :ref:`cast_motion`\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D`\ ) | +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array`\[:ref:`Vector3`\] | :ref:`collide_shape`\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D`, max_results\: :ref:`int` = 32\ ) | +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Dictionary` | :ref:`get_rest_info`\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D`\ ) | +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`intersect_point`\ (\ parameters\: :ref:`PhysicsPointQueryParameters3D`, max_results\: :ref:`int` = 32\ ) | +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Dictionary` | :ref:`intersect_ray`\ (\ parameters\: :ref:`PhysicsRayQueryParameters3D`\ ) | +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`intersect_shape`\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D`, max_results\: :ref:`int` = 32\ ) | +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описания метода ------------------------------ .. _class_PhysicsDirectSpaceState3D_method_cast_motion: .. rst-class:: classref-method :ref:`PackedFloat32Array` **cast_motion**\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D`\ ) :ref:`🔗` Проверяет, насколько далеко :ref:`Shape3D` может двигаться без столкновений. Все параметры для запроса, включая форму и движение, предоставляются через объект :ref:`PhysicsShapeQueryParameters3D`. Возвращает массив с безопасными и небезопасными пропорциями (от 0 до 1) движения. Безопасная пропорция — это максимальная часть движения, которую можно выполнить без столкновений. Небезопасная пропорция — это минимальная часть расстояния, которое необходимо пройти для столкновения. Если столкновение не обнаружено, будет возвращен результат ``[1.0, 1.0]``. \ **Примечание:** Любые :ref:`Shape3D`, с которыми фигура уже сталкивается, например, внутри, будут игнорироваться. Используйте :ref:`collide_shape()`, чтобы определить :ref:`Shape3D`, с которыми фигура уже сталкивается. .. rst-class:: classref-item-separator ---- .. _class_PhysicsDirectSpaceState3D_method_collide_shape: .. rst-class:: classref-method :ref:`Array`\[:ref:`Vector3`\] **collide_shape**\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D`, max_results\: :ref:`int` = 32\ ) :ref:`🔗` Проверяет пересечения формы, заданной через объект :ref:`PhysicsShapeQueryParameters3D`, с пространством. Результирующий массив содержит список точек, в которых форма пересекает другую. Как и в случае с :ref:`intersect_shape()`, количество возвращаемых результатов может быть ограничено для экономии времени обработки. Возвращаемые точки представляют собой список пар точек контакта. Для каждой пары первая находится в форме, переданной в объект :ref:`PhysicsShapeQueryParameters3D`, вторая — в столкновенной форме из физического пространства. \ **Примечание:** Этот метод не учитывает свойство ``motion`` объекта. .. rst-class:: classref-item-separator ---- .. _class_PhysicsDirectSpaceState3D_method_get_rest_info: .. rst-class:: classref-method :ref:`Dictionary` **get_rest_info**\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D`\ ) :ref:`🔗` Проверяет пересечения фигуры, заданной через объект :ref:`PhysicsShapeQueryParameters3D`, с пространством. Если она сталкивается с несколькими фигурами, выбирается ближайшая. Возвращаемый объект представляет собой словарь, содержащий следующие поля: \ ``collider_id``: идентификатор сталкивающегося объекта. \ ``linear_velocity``: скорость сталкивающегося объекта :ref:`Vector3`. Если объект является :ref:`Area3D`, результатом будет ``(0, 0, 0)``. \ ``normal``: нормаль столкновения фигуры запроса в точке пересечения, направленная от пересекающегося объекта. \ ``point``: точка пересечения. \ ``rid``: :ref:`RID` пересекающегося объекта. \ ``shape``: индекс фигуры сталкивающейся фигуры. Если фигура ничего не пересекла, то вместо этого возвращается пустой словарь. \ **Примечание:** Этот метод не учитывает свойство ``motion`` объекта. .. rst-class:: classref-item-separator ---- .. _class_PhysicsDirectSpaceState3D_method_intersect_point: .. rst-class:: classref-method :ref:`Array`\[:ref:`Dictionary`\] **intersect_point**\ (\ parameters\: :ref:`PhysicsPointQueryParameters3D`, max_results\: :ref:`int` = 32\ ) :ref:`🔗` Проверяет, находится ли точка внутри какой-либо сплошной фигуры. Положение и другие параметры определяются через :ref:`PhysicsPointQueryParameters3D`. Фигуры, внутри которых находится точка, возвращаются в массиве, содержащем словари со следующими полями: \ ``collider``: сталкивающийся объект. \ ``collider_id``: идентификатор сталкивающегося объекта. \ ``rid``: :ref:`RID` пересекающегося объекта. \ ``shape``: индекс сталкивающейся фигуры. Количество пересечений можно ограничить параметром ``max_results``, чтобы сократить время обработки. .. rst-class:: classref-item-separator ---- .. _class_PhysicsDirectSpaceState3D_method_intersect_ray: .. rst-class:: classref-method :ref:`Dictionary` **intersect_ray**\ (\ parameters\: :ref:`PhysicsRayQueryParameters3D`\ ) :ref:`🔗` Пересекает луч в заданном пространстве. Положение луча и другие параметры определяются через :ref:`PhysicsRayQueryParameters3D`. Возвращаемый объект представляет собой словарь со следующими полями: \ ``collider``: сталкивающийся объект. \ ``collider_id``: идентификатор сталкивающегося объекта. \ ``normal``: нормаль поверхности объекта в точке пересечения или ``Vector3(0, 0, 0)``, если луч начинается внутри фигуры и :ref:`PhysicsRayQueryParameters3D.hit_from_inside` равен ``true``. \ ``position``: точка пересечения. \ ``face_index``: индекс грани в точке пересечения. \ **Примечание:** Возвращает допустимое число, только если пересекаемая фигура является :ref:`ConcavePolygonShape3D`. В противном случае возвращается ``-1``. \ ``rid``: :ref:`RID` пересекающегося объекта. \ ``shape``: Индекс формы сталкивающейся фигуры. Если луч ничего не пересек, то вместо этого возвращается пустой словарь. .. rst-class:: classref-item-separator ---- .. _class_PhysicsDirectSpaceState3D_method_intersect_shape: .. rst-class:: classref-method :ref:`Array`\[:ref:`Dictionary`\] **intersect_shape**\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D`, max_results\: :ref:`int` = 32\ ) :ref:`🔗` Проверяет пересечения формы, заданной через объект :ref:`PhysicsShapeQueryParameters3D`, с пространством. Пересеченные формы возвращаются в массиве, содержащем словари со следующими полями: \ ``collider``: сталкивающийся объект. \ ``collider_id``: идентификатор сталкивающегося объекта. \ ``rid``: :ref:`RID` пересекающегося объекта. \ ``shape``: индекс формы сталкивающейся формы. Количество пересечений можно ограничить параметром ``max_results``, чтобы сократить время обработки. \ **Примечание:** Этот метод не учитывает свойство ``motion`` объекта. .. |virtual| replace:: :abbr:`virtual (Этот метод обычно должен быть переопределен пользователем, чтобы иметь какой-либо эффект.)` .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)` .. |const| replace:: :abbr:`const (Этот метод не имеет побочных эффектов. Он не изменяет ни одну из переменных-членов экземпляра.)` .. |vararg| replace:: :abbr:`vararg (Этот метод принимает любое количество аргументов после описанных здесь.)` .. |constructor| replace:: :abbr:`constructor (Этот метод используется для создания типа.)` .. |static| replace:: :abbr:`static (Этот метод не нуждается в вызове экземпляра, поэтому его можно вызвать напрямую, используя имя класса.)` .. |operator| replace:: :abbr:`operator (Этот метод описывает допустимый оператор для использования с этим типом в качестве левого операнда.)` .. |bitfield| replace:: :abbr:`BitField (Это значение является целым числом, составленным как битовая маска следующих флагов.)` .. |void| replace:: :abbr:`void (Нет возвращаемого значения.)`