Данный класс помогает в работе с 2Д геометрией. Создание геометрических форм, объединение, разделение, нахождение точек на плоскости и прочее.
На гифке выше пример операции вырезания одной геометрии из другой. А всего их существует четыре:
Difference,Union, Intersection и XOR.
В рамках данныой статьи не будет полного разбора каждого метода. Пройдемся по основному, с чем обычно сталкиваются новички.
Переходим к практике.
Препарировать будем полигоны нод Polygon2D.
Создадим сцену, в которой поместим два полигона А и В произвольной формы.
Я нарисовал квадрат и треугольник.
Если вдруг кто-то не в курсе как рисовать полигон - в меню есть специальный отдел.
Полигон может быть затекстурен. Для этого можно дропнуть картинку в соответствующий раздел ноды , и настроить через меню указанное выше координаты этой текстуры через UV.
Но об этом чуть ниже.
Накидываем код.
Будем вырезать полигон А из полигона В. Для этого используем метод clip_polygons()
Определяем выходную геометрию в переменную Х.
Результатом будет массив точек в формате PackedVector2Array, или если по простому обычный массив точек.
Мы можем подать его в данные в один из исходных полигонов, или же создать новую форму и подать эти данные туда.
В нашем случае мы подадим данные в полигон А.
Запускаем код…и в результате мы не получим ничего :)
Выведем переменную Х в print для того чтобы понять с чем имеем дело :
Если внимательно присмотреться, то можно заметить что массив содержит еще один массив.
Исправляем это в коде, и заранее выключаем видимость полигона В чтобы он не мешал видеть результат:
Можно заметить, что теперь всё работает как и ожидалось.
Текстурирование полигона.
Как уже указывалось выше - дропаем картинку в раздел текстуры:
По умолчанию текстура ложиться по координатам вьюпорта.
Но так как мы нарисовали полигон ближе к центру вьюпорта, заметно что текстура «уехала»
Жмем кнопку UV, для более тонкой настройки расположения текстуры.
Тут ничего сложного. Есть привязка к сетке и все основные трансформации.
На этом пока всё.
В следующей части займемся трансформациями полигона, и окунемся поглубже в нюансы работы с этим классом.
Подписывайтесь на канал, вступайте в группу в ВК, и не забывайте что у нас есть дискорд сервер.
Удачи в изучении годо !