Line2D

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

Двумерная полилиния, которую при желании можно текстурировать.

Описание

Этот узел рисует 2D-полилинию, т. е. фигуру, состоящую из нескольких точек, соединенных сегментами. Line2D не является математической полилинией, т. е. сегменты не бесконечно тонкие. Он предназначен для рендеринга и может быть окрашен и опционально текстурирован.

Предупреждение: Некоторые конфигурации может быть невозможно нарисовать красиво, например, очень острые углы. В таких ситуациях узел использует резервную логику рисования, чтобы выглядеть прилично.

Примечание: Line2D рисуется с использованием 2D-сетки.

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

Свойства

bool

antialiased

false

LineCapMode

begin_cap_mode

0

bool

closed

false

Color

default_color

Color(1, 1, 1, 1)

LineCapMode

end_cap_mode

0

Gradient

gradient

LineJointMode

joint_mode

0

PackedVector2Array

points

PackedVector2Array()

int

round_precision

8

float

sharp_limit

2.0

Texture2D

texture

LineTextureMode

texture_mode

0

float

width

10.0

Curve

width_curve

Методы

void

add_point(position: Vector2, index: int = -1)

void

clear_points()

int

get_point_count() const

Vector2

get_point_position(index: int) const

void

remove_point(index: int)

void

set_point_position(index: int, position: Vector2)


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

enum LineJointMode: 🔗

LineJointMode LINE_JOINT_SHARP = 0

Делает сочленения полилинии заостренными, соединяя стороны двух сегментов, удлиняя их до пересечения. Если вращение сочленения слишком велико (на основе sharp_limit), сочленение возвращается к LINE_JOINT_BEVEL, чтобы предотвратить слишком длинные скосы.

LineJointMode LINE_JOINT_BEVEL = 1

Делает стыки полилинии скошенными/скошенными, соединяя стороны двух сегментов простой линией.

LineJointMode LINE_JOINT_ROUND = 2

Делает стыки полилинии скругленными, соединяя стороны двух сегментов дугой. Детализация этой дуги зависит от round_precision.


enum LineCapMode: 🔗

LineCapMode LINE_CAP_NONE = 0

Не рисует линию.

LineCapMode LINE_CAP_BOX = 1

Рисует окончание линии в виде прямоугольника, слегка расширяя первый/последний сегмент.

LineCapMode LINE_CAP_ROUND = 2

Рисует окончание линии в виде полукруга, прикрепленного к первому/последнему сегменту.


enum LineTextureMode: 🔗

LineTextureMode LINE_TEXTURE_NONE = 0

Берет левые пиксели текстуры и визуализирует их по всей полилинии.

LineTextureMode LINE_TEXTURE_TILE = 1

Размещает текстуру на полилинии. CanvasItem.texture_repeat узла Line2D должен быть CanvasItem.TEXTURE_REPEAT_ENABLED или CanvasItem.TEXTURE_REPEAT_MIRROR для правильной работы.

LineTextureMode LINE_TEXTURE_STRETCH = 2

Растягивает текстуру по полилинии. CanvasItem.texture_repeat узла Line2D должен быть CanvasItem.TEXTURE_REPEAT_DISABLED для достижения наилучших результатов.


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

bool antialiased = false 🔗

  • void set_antialiased(value: bool)

  • bool get_antialiased()

Если true, граница полилинии будет сглажена.

Примечание: Line2D не ускоряется пакетированием при сглаживании.


LineCapMode begin_cap_mode = 0 🔗

Стиль начала полилинии, если closed равен false.


bool closed = false 🔗

  • void set_closed(value: bool)

  • bool is_closed()

Если true и полилиния имеет более 2 точек, последняя точка и первая будут соединены сегментом.

Примечание: Форма замыкающего сегмента не гарантируется бесшовной, если указан width_curve.

Примечание: Стык между замыкающим сегментом и первым сегментом рисуется первым, и он выбирает gradient и width_curve в начале. Это деталь реализации, которая может измениться в будущей версии.


Color default_color = Color(1, 1, 1, 1) 🔗

  • void set_default_color(value: Color)

  • Color get_default_color()

Цвет полилинии. Не будет использоваться, если задан градиент.


LineCapMode end_cap_mode = 0 🔗

Стиль окончания полилинии, если closed равен false.


Gradient gradient 🔗

Градиент рисуется по всей линии от начала до конца. default_color не будет использоваться, если это свойство установлено.


LineJointMode joint_mode = 0 🔗

Стиль соединений между сегментами полилинии.


PackedVector2Array points = PackedVector2Array() 🔗

Точки полилинии, интерпретированные в локальных 2D-координатах. Сегменты рисуются между соседними точками в этом массиве.

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


int round_precision = 8 🔗

  • void set_round_precision(value: int)

  • int get_round_precision()

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


float sharp_limit = 2.0 🔗

  • void set_sharp_limit(value: float)

  • float get_sharp_limit()

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


Texture2D texture 🔗

Текстура, используемая для полилинии. Использует texture_mode для стиля рисования.


LineTextureMode texture_mode = 0 🔗

Стиль для визуализации texture полилинии.


float width = 10.0 🔗

Ширина полилинии.


Curve width_curve 🔗

Кривая ширины полилинии. Ширина полилинии по ее длине будет эквивалентна значению кривой ширины по ее домену. Кривая ширины должна быть единицей Curve.


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

void add_point(position: Vector2, index: int = -1) 🔗

Добавляет точку с указанным position относительно собственного положения полилинии. Если index не указан, новая точка будет добавлена в конец массива точек.

Если указан index, новая точка вставляется перед существующей точкой, идентифицированной индексом index. Индексы точек после новой точки увеличиваются на 1. Предоставленный index не должен превышать количество существующих точек в полилинии. См. get_point_count().


void clear_points() 🔗

Удаляет все точки из полилинии, делая ее пустой.


int get_point_count() const 🔗

Возвращает количество точек в полилинии.


Vector2 get_point_position(index: int) const 🔗

Возвращает положение точки с индексом index.


void remove_point(index: int) 🔗

Удаляет точку с индексом index из полилинии.


void set_point_position(index: int, position: Vector2) 🔗

Заменяет позицию точки с указанным index на предоставленную position.