Shape2D

Наследует: Resource < RefCounted < Object

Наследуется от: CapsuleShape2D, CircleShape2D, ConcavePolygonShape2D, ConvexPolygonShape2D, RectangleShape2D, SegmentShape2D, SeparationRayShape2D, WorldBoundaryShape2D

Абстрактный базовый класс для двумерных фигур, используемых для физических столкновений.

Описание

Абстрактный базовый класс для всех 2D-фигур, предназначенный для использования в физике.

Производительность: Примитивные формы, особенно CircleShape2D, быстро проверяют столкновения. ConvexPolygonShape2D медленнее, а ConcavePolygonShape2D — самый медленный.

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

Свойства

float

custom_solver_bias

0.0

Методы

bool

collide(local_xform: Transform2D, with_shape: Shape2D, shape_xform: Transform2D)

PackedVector2Array

collide_and_get_contacts(local_xform: Transform2D, with_shape: Shape2D, shape_xform: Transform2D)

bool

collide_with_motion(local_xform: Transform2D, local_motion: Vector2, with_shape: Shape2D, shape_xform: Transform2D, shape_motion: Vector2)

PackedVector2Array

collide_with_motion_and_get_contacts(local_xform: Transform2D, local_motion: Vector2, with_shape: Shape2D, shape_xform: Transform2D, shape_motion: Vector2)

void

draw(canvas_item: RID, color: Color)

Rect2

get_rect() const


Описания свойств

float custom_solver_bias = 0.0 🔗

  • void set_custom_solver_bias(value: float)

  • float get_custom_solver_bias()

Пользовательское смещение решателя формы. Определяет, насколько тела реагируют, чтобы обеспечить разделение контактов, когда задействована эта форма.

Если установлено значение 0, используется значение по умолчанию из ProjectSettings.physics/2d/solver/default_contact_bias.


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

bool collide(local_xform: Transform2D, with_shape: Shape2D, shape_xform: Transform2D) 🔗

Возвращает true, если эта фигура сталкивается с другой.

Для этого метода требуется матрица преобразования для этой фигуры (local_xform), фигура для проверки столкновений (with_shape) и матрица преобразования этой фигуры (shape_xform).


PackedVector2Array collide_and_get_contacts(local_xform: Transform2D, with_shape: Shape2D, shape_xform: Transform2D) 🔗

Возвращает список пар точек контакта, где эта фигура касается с другой.

Если столкновений нет, возвращаемый список пуст. В противном случае возвращаемый список содержит точки контакта, организованные парами, с записями, чередующимися между точками на границе этой фигуры и точками на границе with_shape.

Пара столкновений A, и B может использоваться для вычисления нормали столкновения с помощью (B - A).normalized() и глубины столкновения с помощью (B - A).length(). Эта информация обычно используется для разделения фигур, особенно в решение столкновений.

Для этого метода требуется матрица преобразования для этой фигуры (local_xform), фигура для проверки столкновений (with_shape) и матрица преобразования этой фигуры (shape_xform).


bool collide_with_motion(local_xform: Transform2D, local_motion: Vector2, with_shape: Shape2D, shape_xform: Transform2D, shape_motion: Vector2) 🔗

Возвращает, будет ли эта фигура сталкиваться с другой, если было применено заданное движение.

Для этого метода требуется матрица преобразования для этой фигуры (local_xform), движение для проверки на этой фигуре (local_motion), фигура для проверки столкновений с (with_shape), матрица преобразования этой фигуры (shape_xform) и движение для проверки на другом объекте (shape_motion).


PackedVector2Array collide_with_motion_and_get_contacts(local_xform: Transform2D, local_motion: Vector2, with_shape: Shape2D, shape_xform: Transform2D, shape_motion: Vector2) 🔗

Возвращает список пар точек контакта, где данная фигура соприкоснется с другой, если будет применено заданное движение.

Если бы не было столкновений, возвращаемый список был бы пуст. В противном случае возвращаемый список содержит точки контакта, организованные парами, с записями, чередующимися между точками на границе этой формы и точками на границе with_shape.

Пару столкновений A, B можно использовать для расчета нормали столкновения с помощью (B - A).normalized(), а глубину столкновения с помощью (B - A).length(). Эта информация обычно используется для разделения фигур, особенно в программах решения столкновений.

Для этого метода требуется матрица преобразования для этой формы (local_xform), движение для проверки этой формы (local_motion), форма для проверки столкновений с ней (with_shape), матрица преобразования этой формы (shape_xform) и движение для проверки другого объекта (shape_motion).


void draw(canvas_item: RID, color: Color) 🔗

Рисует сплошную фигуру на CanvasItem с API RenderingServer, заполненную указанным color. Точный метод рисования специфичен для каждой фигуры и не может быть настроен.


Rect2 get_rect() const 🔗

Возвращает Rect2, представляющий границу фигуры.