Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

CollisionPolygon2D

Наследует: Node2D < CanvasItem < Node < Object

Узел, который придает многоугольную форму родительскому объекту CollisionObject2D.

Описание

Узел, который задает форму многоугольника для родительского объекта CollisionObject2D и позволяет его редактировать. Многоугольник может быть вогнутым или выпуклым. Это может придать форму обнаружения объекту Area2D, превратить объект PhysicsBody2D в твердый объект или придать объекту StaticBody2D форму полого объекта.

Предупреждение: Объект CollisionPolygon2D с неравномерным масштабированием, скорее всего, будет вести себя не так, как ожидается. Убедитесь, что его масштаб одинаков по всем осям, и вместо этого отрегулируйте его многоугольник.

Свойства

BuildMode

build_mode

0

bool

disabled

false

bool

one_way_collision

false

Vector2

one_way_collision_direction

Vector2(0, 1)

float

one_way_collision_margin

1.0

PackedVector2Array

polygon

PackedVector2Array()


Перечисления

enum BuildMode: 🔗

BuildMode BUILD_SOLIDS = 0

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

BuildMode BUILD_SEGMENTS = 1

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


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

BuildMode build_mode = 0 🔗

Режим построения столкновений.


bool disabled = false 🔗

  • void set_disabled(value: bool)

  • bool is_disabled()

Если true, столкновения не будут обнаружены. Это свойство следует изменить с помощью Object.set_deferred().


bool one_way_collision = false 🔗

  • void set_one_way_collision(value: bool)

  • bool is_one_way_collision_enabled()

Если true, то с другими объектами будут сталкиваться только ребра, обращенные вверх относительно вращения CollisionPolygon2D.

Примечание: Это свойство не действует, если этот CollisionPolygon2D является дочерним узлом узла Area2D.

Примечание: Направление одностороннего столкновения можно настроить, установив one_way_collision_direction.


Vector2 one_way_collision_direction = Vector2(0, 1) 🔗

  • void set_one_way_collision_direction(value: Vector2)

  • Vector2 get_one_way_collision_direction()

Направление, используемое при одностороннем столкновении.


float one_way_collision_margin = 1.0 🔗

  • void set_one_way_collision_margin(value: float)

  • float get_one_way_collision_margin()

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


PackedVector2Array polygon = PackedVector2Array() 🔗

Список вершин полигона. Каждая точка будет соединена со следующей, а последняя точка будет соединена с первой.

Примечание: Возвращаемые вершины находятся в локальном координатном пространстве заданного CollisionPolygon2D.

Note: The returned array is copied and any changes to it will not update the original property value. See PackedVector2Array for more details.