mirror of
https://github.com/godotengine/godot-docs-l10n.git
synced 2025-12-31 09:49:22 +03:00
204 lines
17 KiB
ReStructuredText
204 lines
17 KiB
ReStructuredText
:github_url: hide
|
||
|
||
.. _class_PhysicsDirectSpaceState3D:
|
||
|
||
PhysicsDirectSpaceState3D
|
||
=========================
|
||
|
||
**Наследует:** :ref:`Object<class_Object>`
|
||
|
||
**Наследуется от:** :ref:`PhysicsDirectSpaceState3DExtension<class_PhysicsDirectSpaceState3DExtension>`
|
||
|
||
Предоставляет прямой доступ к физическому пространству в :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
|
||
|
||
.. rst-class:: classref-introduction-group
|
||
|
||
Описание
|
||
----------------
|
||
|
||
Предоставляет прямой доступ к физическому пространству в :ref:`PhysicsServer3D<class_PhysicsServer3D>`. Используется в основном для выполнения запросов к объектам и областям, находящимся в заданном пространстве.
|
||
|
||
\ **Примечание:** Этот класс не предназначен для непосредственного создания экземпляра. Используйте :ref:`World3D.direct_space_state<class_World3D_property_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<class_PackedFloat32Array>` | :ref:`cast_motion<class_PhysicsDirectSpaceState3D_method_cast_motion>`\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D<class_PhysicsShapeQueryParameters3D>`\ ) |
|
||
+------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Array<class_Array>`\[:ref:`Vector3<class_Vector3>`\] | :ref:`collide_shape<class_PhysicsDirectSpaceState3D_method_collide_shape>`\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D<class_PhysicsShapeQueryParameters3D>`, max_results\: :ref:`int<class_int>` = 32\ ) |
|
||
+------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Dictionary<class_Dictionary>` | :ref:`get_rest_info<class_PhysicsDirectSpaceState3D_method_get_rest_info>`\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D<class_PhysicsShapeQueryParameters3D>`\ ) |
|
||
+------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] | :ref:`intersect_point<class_PhysicsDirectSpaceState3D_method_intersect_point>`\ (\ parameters\: :ref:`PhysicsPointQueryParameters3D<class_PhysicsPointQueryParameters3D>`, max_results\: :ref:`int<class_int>` = 32\ ) |
|
||
+------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Dictionary<class_Dictionary>` | :ref:`intersect_ray<class_PhysicsDirectSpaceState3D_method_intersect_ray>`\ (\ parameters\: :ref:`PhysicsRayQueryParameters3D<class_PhysicsRayQueryParameters3D>`\ ) |
|
||
+------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] | :ref:`intersect_shape<class_PhysicsDirectSpaceState3D_method_intersect_shape>`\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D<class_PhysicsShapeQueryParameters3D>`, max_results\: :ref:`int<class_int>` = 32\ ) |
|
||
+------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
Описания метода
|
||
------------------------------
|
||
|
||
.. _class_PhysicsDirectSpaceState3D_method_cast_motion:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`PackedFloat32Array<class_PackedFloat32Array>` **cast_motion**\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D<class_PhysicsShapeQueryParameters3D>`\ ) :ref:`🔗<class_PhysicsDirectSpaceState3D_method_cast_motion>`
|
||
|
||
Проверяет, насколько далеко :ref:`Shape3D<class_Shape3D>` может двигаться без столкновений. Все параметры для запроса, включая форму и движение, предоставляются через объект :ref:`PhysicsShapeQueryParameters3D<class_PhysicsShapeQueryParameters3D>`.
|
||
|
||
Возвращает массив с безопасными и небезопасными пропорциями (от 0 до 1) движения. Безопасная пропорция — это максимальная часть движения, которую можно выполнить без столкновений. Небезопасная пропорция — это минимальная часть расстояния, которое необходимо пройти для столкновения. Если столкновение не обнаружено, будет возвращен результат ``[1.0, 1.0]``.
|
||
|
||
\ **Примечание:** Любые :ref:`Shape3D<class_Shape3D>`, с которыми фигура уже сталкивается, например, внутри, будут игнорироваться. Используйте :ref:`collide_shape()<class_PhysicsDirectSpaceState3D_method_collide_shape>`, чтобы определить :ref:`Shape3D<class_Shape3D>`, с которыми фигура уже сталкивается.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_PhysicsDirectSpaceState3D_method_collide_shape:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Array<class_Array>`\[:ref:`Vector3<class_Vector3>`\] **collide_shape**\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D<class_PhysicsShapeQueryParameters3D>`, max_results\: :ref:`int<class_int>` = 32\ ) :ref:`🔗<class_PhysicsDirectSpaceState3D_method_collide_shape>`
|
||
|
||
Проверяет пересечения формы, заданной через объект :ref:`PhysicsShapeQueryParameters3D<class_PhysicsShapeQueryParameters3D>`, с пространством. Результирующий массив содержит список точек, в которых форма пересекает другую. Как и в случае с :ref:`intersect_shape()<class_PhysicsDirectSpaceState3D_method_intersect_shape>`, количество возвращаемых результатов может быть ограничено для экономии времени обработки.
|
||
|
||
Возвращаемые точки представляют собой список пар точек контакта. Для каждой пары первая находится в форме, переданной в объект :ref:`PhysicsShapeQueryParameters3D<class_PhysicsShapeQueryParameters3D>`, вторая — в столкновенной форме из физического пространства.
|
||
|
||
\ **Примечание:** Этот метод не учитывает свойство ``motion`` объекта.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_PhysicsDirectSpaceState3D_method_get_rest_info:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Dictionary<class_Dictionary>` **get_rest_info**\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D<class_PhysicsShapeQueryParameters3D>`\ ) :ref:`🔗<class_PhysicsDirectSpaceState3D_method_get_rest_info>`
|
||
|
||
Проверяет пересечения фигуры, заданной через объект :ref:`PhysicsShapeQueryParameters3D<class_PhysicsShapeQueryParameters3D>`, с пространством. Если она сталкивается с несколькими фигурами, выбирается ближайшая. Возвращаемый объект представляет собой словарь, содержащий следующие поля:
|
||
|
||
\ ``collider_id``: идентификатор сталкивающегося объекта.
|
||
|
||
\ ``linear_velocity``: скорость сталкивающегося объекта :ref:`Vector3<class_Vector3>`. Если объект является :ref:`Area3D<class_Area3D>`, результатом будет ``(0, 0, 0)``.
|
||
|
||
\ ``normal``: нормаль столкновения фигуры запроса в точке пересечения, направленная от пересекающегося объекта.
|
||
|
||
\ ``point``: точка пересечения.
|
||
|
||
\ ``rid``: :ref:`RID<class_RID>` пересекающегося объекта.
|
||
|
||
\ ``shape``: индекс фигуры сталкивающейся фигуры.
|
||
|
||
Если фигура ничего не пересекла, то вместо этого возвращается пустой словарь.
|
||
|
||
\ **Примечание:** Этот метод не учитывает свойство ``motion`` объекта.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_PhysicsDirectSpaceState3D_method_intersect_point:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] **intersect_point**\ (\ parameters\: :ref:`PhysicsPointQueryParameters3D<class_PhysicsPointQueryParameters3D>`, max_results\: :ref:`int<class_int>` = 32\ ) :ref:`🔗<class_PhysicsDirectSpaceState3D_method_intersect_point>`
|
||
|
||
Проверяет, находится ли точка внутри какой-либо сплошной фигуры. Положение и другие параметры определяются через :ref:`PhysicsPointQueryParameters3D<class_PhysicsPointQueryParameters3D>`. Фигуры, внутри которых находится точка, возвращаются в массиве, содержащем словари со следующими полями:
|
||
|
||
\ ``collider``: сталкивающийся объект.
|
||
|
||
\ ``collider_id``: идентификатор сталкивающегося объекта.
|
||
|
||
\ ``rid``: :ref:`RID<class_RID>` пересекающегося объекта.
|
||
|
||
\ ``shape``: индекс сталкивающейся фигуры.
|
||
|
||
Количество пересечений можно ограничить параметром ``max_results``, чтобы сократить время обработки.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_PhysicsDirectSpaceState3D_method_intersect_ray:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Dictionary<class_Dictionary>` **intersect_ray**\ (\ parameters\: :ref:`PhysicsRayQueryParameters3D<class_PhysicsRayQueryParameters3D>`\ ) :ref:`🔗<class_PhysicsDirectSpaceState3D_method_intersect_ray>`
|
||
|
||
Пересекает луч в заданном пространстве. Положение луча и другие параметры определяются через :ref:`PhysicsRayQueryParameters3D<class_PhysicsRayQueryParameters3D>`. Возвращаемый объект представляет собой словарь со следующими полями:
|
||
|
||
\ ``collider``: сталкивающийся объект.
|
||
|
||
\ ``collider_id``: идентификатор сталкивающегося объекта.
|
||
|
||
\ ``normal``: нормаль поверхности объекта в точке пересечения или ``Vector3(0, 0, 0)``, если луч начинается внутри фигуры и :ref:`PhysicsRayQueryParameters3D.hit_from_inside<class_PhysicsRayQueryParameters3D_property_hit_from_inside>` равен ``true``.
|
||
|
||
\ ``position``: точка пересечения.
|
||
|
||
\ ``face_index``: индекс грани в точке пересечения.
|
||
|
||
\ **Примечание:** Возвращает допустимое число, только если пересекаемая фигура является :ref:`ConcavePolygonShape3D<class_ConcavePolygonShape3D>`. В противном случае возвращается ``-1``.
|
||
|
||
\ ``rid``: :ref:`RID<class_RID>` пересекающегося объекта.
|
||
|
||
\ ``shape``: Индекс формы сталкивающейся фигуры.
|
||
|
||
Если луч ничего не пересек, то вместо этого возвращается пустой словарь.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_PhysicsDirectSpaceState3D_method_intersect_shape:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] **intersect_shape**\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D<class_PhysicsShapeQueryParameters3D>`, max_results\: :ref:`int<class_int>` = 32\ ) :ref:`🔗<class_PhysicsDirectSpaceState3D_method_intersect_shape>`
|
||
|
||
Проверяет пересечения формы, заданной через объект :ref:`PhysicsShapeQueryParameters3D<class_PhysicsShapeQueryParameters3D>`, с пространством. Пересеченные формы возвращаются в массиве, содержащем словари со следующими полями:
|
||
|
||
\ ``collider``: сталкивающийся объект.
|
||
|
||
\ ``collider_id``: идентификатор сталкивающегося объекта.
|
||
|
||
\ ``rid``: :ref:`RID<class_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 (Нет возвращаемого значения.)`
|