:github_url: hide .. _class_Shape2D: Shape2D ======= **Наследует:** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` **Наследуется от:** :ref:`CapsuleShape2D`, :ref:`CircleShape2D`, :ref:`ConcavePolygonShape2D`, :ref:`ConvexPolygonShape2D`, :ref:`RectangleShape2D`, :ref:`SegmentShape2D`, :ref:`SeparationRayShape2D`, :ref:`WorldBoundaryShape2D` Абстрактный базовый класс для двумерных фигур, используемых для физических столкновений. .. rst-class:: classref-introduction-group Описание ---------------- Абстрактный базовый класс для всех 2D-фигур, предназначенный для использования в физике. \ **Производительность:** Примитивные формы, особенно :ref:`CircleShape2D`, быстро проверяют столкновения. :ref:`ConvexPolygonShape2D` медленнее, а :ref:`ConcavePolygonShape2D` — самый медленный. .. rst-class:: classref-introduction-group Обучающие материалы -------------------------------------- - :doc:`Введение в физику <../tutorials/physics/physics_introduction>` .. rst-class:: classref-reftable-group Свойства ---------------- .. table:: :widths: auto +---------------------------+----------------------------------------------------------------------+---------+ | :ref:`float` | :ref:`custom_solver_bias` | ``0.0`` | +---------------------------+----------------------------------------------------------------------+---------+ .. rst-class:: classref-reftable-group Методы ------------ .. table:: :widths: auto +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`collide`\ (\ local_xform\: :ref:`Transform2D`, with_shape\: :ref:`Shape2D`, shape_xform\: :ref:`Transform2D`\ ) | +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector2Array` | :ref:`collide_and_get_contacts`\ (\ local_xform\: :ref:`Transform2D`, with_shape\: :ref:`Shape2D`, shape_xform\: :ref:`Transform2D`\ ) | +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`collide_with_motion`\ (\ local_xform\: :ref:`Transform2D`, local_motion\: :ref:`Vector2`, with_shape\: :ref:`Shape2D`, shape_xform\: :ref:`Transform2D`, shape_motion\: :ref:`Vector2`\ ) | +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector2Array` | :ref:`collide_with_motion_and_get_contacts`\ (\ local_xform\: :ref:`Transform2D`, local_motion\: :ref:`Vector2`, with_shape\: :ref:`Shape2D`, shape_xform\: :ref:`Transform2D`, shape_motion\: :ref:`Vector2`\ ) | +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`draw`\ (\ canvas_item\: :ref:`RID`, color\: :ref:`Color`\ ) | +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Rect2` | :ref:`get_rect`\ (\ ) |const| | +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описания свойств -------------------------------- .. _class_Shape2D_property_custom_solver_bias: .. rst-class:: classref-property :ref:`float` **custom_solver_bias** = ``0.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_custom_solver_bias**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_custom_solver_bias**\ (\ ) Пользовательское смещение решателя формы. Определяет, насколько тела реагируют, чтобы обеспечить разделение контактов, когда задействована эта форма. Если установлено значение ``0``, используется значение по умолчанию из :ref:`ProjectSettings.physics/2d/solver/default_contact_bias`. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описания метода ------------------------------ .. _class_Shape2D_method_collide: .. rst-class:: classref-method :ref:`bool` **collide**\ (\ local_xform\: :ref:`Transform2D`, with_shape\: :ref:`Shape2D`, shape_xform\: :ref:`Transform2D`\ ) :ref:`🔗` Возвращает ``true``, если эта фигура сталкивается с другой. Для этого метода требуется матрица преобразования для этой фигуры (``local_xform``), фигура для проверки столкновений (``with_shape``) и матрица преобразования этой фигуры (``shape_xform``). .. rst-class:: classref-item-separator ---- .. _class_Shape2D_method_collide_and_get_contacts: .. rst-class:: classref-method :ref:`PackedVector2Array` **collide_and_get_contacts**\ (\ local_xform\: :ref:`Transform2D`, with_shape\: :ref:`Shape2D`, shape_xform\: :ref:`Transform2D`\ ) :ref:`🔗` Возвращает список пар точек контакта, где эта фигура касается с другой. Если столкновений нет, возвращаемый список пуст. В противном случае возвращаемый список содержит точки контакта, организованные парами, с записями, чередующимися между точками на границе этой фигуры и точками на границе ``with_shape``. Пара столкновений A, и B может использоваться для вычисления нормали столкновения с помощью ``(B - A).normalized()`` и глубины столкновения с помощью ``(B - A).length()``. Эта информация обычно используется для разделения фигур, особенно в решение столкновений. Для этого метода требуется матрица преобразования для этой фигуры (``local_xform``), фигура для проверки столкновений (``with_shape``) и матрица преобразования этой фигуры (``shape_xform``). .. rst-class:: classref-item-separator ---- .. _class_Shape2D_method_collide_with_motion: .. rst-class:: classref-method :ref:`bool` **collide_with_motion**\ (\ local_xform\: :ref:`Transform2D`, local_motion\: :ref:`Vector2`, with_shape\: :ref:`Shape2D`, shape_xform\: :ref:`Transform2D`, shape_motion\: :ref:`Vector2`\ ) :ref:`🔗` Возвращает, будет ли эта фигура сталкиваться с другой, если было применено заданное движение. Для этого метода требуется матрица преобразования для этой фигуры (``local_xform``), движение для проверки на этой фигуре (``local_motion``), фигура для проверки столкновений с (``with_shape``), матрица преобразования этой фигуры (``shape_xform``) и движение для проверки на другом объекте (``shape_motion``). .. rst-class:: classref-item-separator ---- .. _class_Shape2D_method_collide_with_motion_and_get_contacts: .. rst-class:: classref-method :ref:`PackedVector2Array` **collide_with_motion_and_get_contacts**\ (\ local_xform\: :ref:`Transform2D`, local_motion\: :ref:`Vector2`, with_shape\: :ref:`Shape2D`, shape_xform\: :ref:`Transform2D`, shape_motion\: :ref:`Vector2`\ ) :ref:`🔗` Возвращает список пар точек контакта, где данная фигура соприкоснется с другой, если будет применено заданное движение. Если бы не было столкновений, возвращаемый список был бы пуст. В противном случае возвращаемый список содержит точки контакта, организованные парами, с записями, чередующимися между точками на границе этой формы и точками на границе ``with_shape``. Пару столкновений A, B можно использовать для расчета нормали столкновения с помощью ``(B - A).normalized()``, а глубину столкновения с помощью ``(B - A).length()``. Эта информация обычно используется для разделения фигур, особенно в программах решения столкновений. Для этого метода требуется матрица преобразования для этой формы (``local_xform``), движение для проверки этой формы (``local_motion``), форма для проверки столкновений с ней (``with_shape``), матрица преобразования этой формы (``shape_xform``) и движение для проверки другого объекта (``shape_motion``). .. rst-class:: classref-item-separator ---- .. _class_Shape2D_method_draw: .. rst-class:: classref-method |void| **draw**\ (\ canvas_item\: :ref:`RID`, color\: :ref:`Color`\ ) :ref:`🔗` Рисует сплошную фигуру на :ref:`CanvasItem` с API :ref:`RenderingServer`, заполненную указанным ``color``. Точный метод рисования специфичен для каждой фигуры и не может быть настроен. .. rst-class:: classref-item-separator ---- .. _class_Shape2D_method_get_rect: .. rst-class:: classref-method :ref:`Rect2` **get_rect**\ (\ ) |const| :ref:`🔗` Возвращает :ref:`Rect2`, представляющий границу фигуры. .. |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 (Нет возвращаемого значения.)`