Files
godot-docs-l10n/classes/ru/class_physicsbody3d.rst

317 lines
24 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:github_url: hide
.. _class_PhysicsBody3D:
PhysicsBody3D
=============
**Наследует:** :ref:`CollisionObject3D<class_CollisionObject3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
**Наследуется от:** :ref:`CharacterBody3D<class_CharacterBody3D>`, :ref:`PhysicalBone3D<class_PhysicalBone3D>`, :ref:`RigidBody3D<class_RigidBody3D>`, :ref:`StaticBody3D<class_StaticBody3D>`
Абстрактный базовый класс для игровых 3D-объектов, на которые влияет физика.
.. rst-class:: classref-introduction-group
Описание
----------------
**PhysicsBody3D** — абстрактный базовый класс для 3D-объектов игры, на которые влияет физика. Все 3D-физические тела наследуются от него.
\ **Предупреждение:** При неравномерном масштабе этот узел, скорее всего, будет вести себя не так, как ожидалось. Рекомендуется сохранять его масштаб одинаковым по всем осям и вместо этого корректировать его форму(ы) столкновения.
.. rst-class:: classref-introduction-group
Обучающие материалы
--------------------------------------
- :doc:`Введение в физику <../tutorials/physics/physics_introduction>`
- :doc:`Устранение неполадок в физике <../tutorials/physics/troubleshooting_physics_issues>`
.. rst-class:: classref-reftable-group
Свойства
----------------
.. table::
:widths: auto
+-------------------------+------------------------------------------------------------------------------+-----------+
| :ref:`bool<class_bool>` | :ref:`axis_lock_angular_x<class_PhysicsBody3D_property_axis_lock_angular_x>` | ``false`` |
+-------------------------+------------------------------------------------------------------------------+-----------+
| :ref:`bool<class_bool>` | :ref:`axis_lock_angular_y<class_PhysicsBody3D_property_axis_lock_angular_y>` | ``false`` |
+-------------------------+------------------------------------------------------------------------------+-----------+
| :ref:`bool<class_bool>` | :ref:`axis_lock_angular_z<class_PhysicsBody3D_property_axis_lock_angular_z>` | ``false`` |
+-------------------------+------------------------------------------------------------------------------+-----------+
| :ref:`bool<class_bool>` | :ref:`axis_lock_linear_x<class_PhysicsBody3D_property_axis_lock_linear_x>` | ``false`` |
+-------------------------+------------------------------------------------------------------------------+-----------+
| :ref:`bool<class_bool>` | :ref:`axis_lock_linear_y<class_PhysicsBody3D_property_axis_lock_linear_y>` | ``false`` |
+-------------------------+------------------------------------------------------------------------------+-----------+
| :ref:`bool<class_bool>` | :ref:`axis_lock_linear_z<class_PhysicsBody3D_property_axis_lock_linear_z>` | ``false`` |
+-------------------------+------------------------------------------------------------------------------+-----------+
.. rst-class:: classref-reftable-group
Методы
------------
.. table::
:widths: auto
+------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`add_collision_exception_with<class_PhysicsBody3D_method_add_collision_exception_with>`\ (\ body\: :ref:`Node<class_Node>`\ ) |
+------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`get_axis_lock<class_PhysicsBody3D_method_get_axis_lock>`\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`\ ) |const| |
+------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Array<class_Array>`\[:ref:`PhysicsBody3D<class_PhysicsBody3D>`\] | :ref:`get_collision_exceptions<class_PhysicsBody3D_method_get_collision_exceptions>`\ (\ ) |
+------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector3<class_Vector3>` | :ref:`get_gravity<class_PhysicsBody3D_method_get_gravity>`\ (\ ) |const| |
+------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`KinematicCollision3D<class_KinematicCollision3D>` | :ref:`move_and_collide<class_PhysicsBody3D_method_move_and_collide>`\ (\ motion\: :ref:`Vector3<class_Vector3>`, test_only\: :ref:`bool<class_bool>` = false, safe_margin\: :ref:`float<class_float>` = 0.001, recovery_as_collision\: :ref:`bool<class_bool>` = false, max_collisions\: :ref:`int<class_int>` = 1\ ) |
+------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`remove_collision_exception_with<class_PhysicsBody3D_method_remove_collision_exception_with>`\ (\ body\: :ref:`Node<class_Node>`\ ) |
+------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_axis_lock<class_PhysicsBody3D_method_set_axis_lock>`\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`, lock\: :ref:`bool<class_bool>`\ ) |
+------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`test_move<class_PhysicsBody3D_method_test_move>`\ (\ from\: :ref:`Transform3D<class_Transform3D>`, motion\: :ref:`Vector3<class_Vector3>`, collision\: :ref:`KinematicCollision3D<class_KinematicCollision3D>` = null, safe_margin\: :ref:`float<class_float>` = 0.001, recovery_as_collision\: :ref:`bool<class_bool>` = false, max_collisions\: :ref:`int<class_int>` = 1\ ) |
+------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Описания свойств
--------------------------------
.. _class_PhysicsBody3D_property_axis_lock_angular_x:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **axis_lock_angular_x** = ``false`` :ref:`🔗<class_PhysicsBody3D_property_axis_lock_angular_x>`
.. rst-class:: classref-property-setget
- |void| **set_axis_lock**\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`, lock\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_bool>` **get_axis_lock**\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`\ ) |const|
Зафиксируйте вращение тела по оси X.
.. rst-class:: classref-item-separator
----
.. _class_PhysicsBody3D_property_axis_lock_angular_y:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **axis_lock_angular_y** = ``false`` :ref:`🔗<class_PhysicsBody3D_property_axis_lock_angular_y>`
.. rst-class:: classref-property-setget
- |void| **set_axis_lock**\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`, lock\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_bool>` **get_axis_lock**\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`\ ) |const|
Зафиксируйте вращение тела по оси Y.
.. rst-class:: classref-item-separator
----
.. _class_PhysicsBody3D_property_axis_lock_angular_z:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **axis_lock_angular_z** = ``false`` :ref:`🔗<class_PhysicsBody3D_property_axis_lock_angular_z>`
.. rst-class:: classref-property-setget
- |void| **set_axis_lock**\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`, lock\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_bool>` **get_axis_lock**\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`\ ) |const|
Зафиксируйте вращение тела по оси Z.
.. rst-class:: classref-item-separator
----
.. _class_PhysicsBody3D_property_axis_lock_linear_x:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **axis_lock_linear_x** = ``false`` :ref:`🔗<class_PhysicsBody3D_property_axis_lock_linear_x>`
.. rst-class:: classref-property-setget
- |void| **set_axis_lock**\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`, lock\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_bool>` **get_axis_lock**\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`\ ) |const|
Зафиксируйте линейное движение тела по оси X.
.. rst-class:: classref-item-separator
----
.. _class_PhysicsBody3D_property_axis_lock_linear_y:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **axis_lock_linear_y** = ``false`` :ref:`🔗<class_PhysicsBody3D_property_axis_lock_linear_y>`
.. rst-class:: classref-property-setget
- |void| **set_axis_lock**\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`, lock\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_bool>` **get_axis_lock**\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`\ ) |const|
Зафиксируйте линейное движение тела по оси Y.
.. rst-class:: classref-item-separator
----
.. _class_PhysicsBody3D_property_axis_lock_linear_z:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **axis_lock_linear_z** = ``false`` :ref:`🔗<class_PhysicsBody3D_property_axis_lock_linear_z>`
.. rst-class:: classref-property-setget
- |void| **set_axis_lock**\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`, lock\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_bool>` **get_axis_lock**\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`\ ) |const|
Зафиксируйте линейное движение тела по оси Z.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Описания метода
------------------------------
.. _class_PhysicsBody3D_method_add_collision_exception_with:
.. rst-class:: classref-method
|void| **add_collision_exception_with**\ (\ body\: :ref:`Node<class_Node>`\ ) :ref:`🔗<class_PhysicsBody3D_method_add_collision_exception_with>`
Добавляет тело в список тел, с которыми данное тело не может столкнуться.
.. rst-class:: classref-item-separator
----
.. _class_PhysicsBody3D_method_get_axis_lock:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **get_axis_lock**\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`\ ) |const| :ref:`🔗<class_PhysicsBody3D_method_get_axis_lock>`
Возвращает ``true``, если указанная линейная или вращательная ``axis`` заблокирована.
.. rst-class:: classref-item-separator
----
.. _class_PhysicsBody3D_method_get_collision_exceptions:
.. rst-class:: classref-method
:ref:`Array<class_Array>`\[:ref:`PhysicsBody3D<class_PhysicsBody3D>`\] **get_collision_exceptions**\ (\ ) :ref:`🔗<class_PhysicsBody3D_method_get_collision_exceptions>`
Возвращает массив узлов, которые были добавлены как исключения столкновений для этого тела.
.. rst-class:: classref-item-separator
----
.. _class_PhysicsBody3D_method_get_gravity:
.. rst-class:: classref-method
:ref:`Vector3<class_Vector3>` **get_gravity**\ (\ ) |const| :ref:`🔗<class_PhysicsBody3D_method_get_gravity>`
Возвращает вектор гравитации, вычисленный из всех источников, которые могут влиять на тело, включая все переопределения гравитации из узлов :ref:`Area3D<class_Area3D>` и глобальную мировую гравитацию.
.. rst-class:: classref-item-separator
----
.. _class_PhysicsBody3D_method_move_and_collide:
.. rst-class:: classref-method
:ref:`KinematicCollision3D<class_KinematicCollision3D>` **move_and_collide**\ (\ motion\: :ref:`Vector3<class_Vector3>`, test_only\: :ref:`bool<class_bool>` = false, safe_margin\: :ref:`float<class_float>` = 0.001, recovery_as_collision\: :ref:`bool<class_bool>` = false, max_collisions\: :ref:`int<class_int>` = 1\ ) :ref:`🔗<class_PhysicsBody3D_method_move_and_collide>`
Перемещает тело вдоль вектора ``motion``. Чтобы не зависеть от частоты кадров в :ref:`Node._physics_process()<class_Node_private_method__physics_process>` или :ref:`Node._process()<class_Node_private_method__process>`, ``motion`` следует вычислять с помощью ``delta``.
Тело остановится, если столкнется. Возвращает :ref:`KinematicCollision3D<class_KinematicCollision3D>`, который содержит информацию о столкновении при остановке или при касании другого тела по ходу движения.
Если ``test_only`` равен ``true``, тело не движется, но предоставляется информация о возможном столкновении.
\ ``safe_margin`` — это дополнительный запас, используемый для восстановления после столкновения (см. :ref:`CharacterBody3D.safe_margin<class_CharacterBody3D_property_safe_margin>` для получения более подробной информации).
Если ``recovery_as_collision`` равен ``true``, любое отклонение от фазы восстановления также сообщается как столкновение; это используется, например, от :ref:`CharacterBody3D<class_CharacterBody3D>` для улучшения обнаружения пола во время привязки к полу.
\ ``max_collisions`` позволяет получить более одного результата столкновения.
.. rst-class:: classref-item-separator
----
.. _class_PhysicsBody3D_method_remove_collision_exception_with:
.. rst-class:: classref-method
|void| **remove_collision_exception_with**\ (\ body\: :ref:`Node<class_Node>`\ ) :ref:`🔗<class_PhysicsBody3D_method_remove_collision_exception_with>`
Удаляет тело из списка тел, с которыми данное тело не может столкнуться.
.. rst-class:: classref-item-separator
----
.. _class_PhysicsBody3D_method_set_axis_lock:
.. rst-class:: classref-method
|void| **set_axis_lock**\ (\ axis\: :ref:`BodyAxis<enum_PhysicsServer3D_BodyAxis>`, lock\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_PhysicsBody3D_method_set_axis_lock>`
Блокирует или разблокирует указанную линейную или вращательную ``axis`` в зависимости от значения ``lock``.
.. rst-class:: classref-item-separator
----
.. _class_PhysicsBody3D_method_test_move:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **test_move**\ (\ from\: :ref:`Transform3D<class_Transform3D>`, motion\: :ref:`Vector3<class_Vector3>`, collision\: :ref:`KinematicCollision3D<class_KinematicCollision3D>` = null, safe_margin\: :ref:`float<class_float>` = 0.001, recovery_as_collision\: :ref:`bool<class_bool>` = false, max_collisions\: :ref:`int<class_int>` = 1\ ) :ref:`🔗<class_PhysicsBody3D_method_test_move>`
Проверяет наличие столкновений без перемещения тела. Чтобы не зависеть от частоты кадров в :ref:`Node._physics_process()<class_Node_private_method__physics_process>` или :ref:`Node._process()<class_Node_private_method__process>`, ``motion`` следует вычислять с помощью ``delta``.
Виртуально устанавливает положение, масштаб и поворот узла в соответствии с заданным :ref:`Transform3D<class_Transform3D>`, затем пытается переместить тело по вектору ``motion``. Возвращает ``true``, если столкновение остановит движение тела по всему пути.
\ ``collision`` — необязательный объект типа :ref:`KinematicCollision3D<class_KinematicCollision3D>`, который содержит дополнительную информацию о столкновении при остановке или при касании другого тела по ходу движения.
\ ``safe_margin`` — дополнительный запас, используемый для восстановления столкновений (подробнее см. в :ref:`CharacterBody3D.safe_margin<class_CharacterBody3D_property_safe_margin>`).
Если ``recovery_as_collision`` равен ``true``, любое отклонение от фазы восстановления также сообщается как столкновение; это полезно для проверки того, будет ли тело *касаться* других тел.
\ ``max_collisions`` позволяет получить более одного результата столкновения.
.. |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 (Нет возвращаемого значения.)`