Найти тему
Игровой движок Godot engine

№167. GODOT 4. Класс Geometry2D

Оглавление

Данный класс помогает в работе с 2Д геометрией. Создание геометрических форм, объединение, разделение, нахождение точек на плоскости и прочее.

На гифке выше пример операции вырезания одной геометрии из другой. А всего их существует четыре:
Difference,Union, Intersection и XOR.

-2

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

Переходим к практике.

Препарировать будем полигоны нод Polygon2D.

Создадим сцену, в которой поместим два полигона А и В произвольной формы.
Я нарисовал квадрат и треугольник.

-3

Если вдруг кто-то не в курсе как рисовать полигон - в меню есть специальный отдел.

-4

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

Накидываем код.

Будем вырезать полигон А из полигона В. Для этого используем метод clip_polygons()

Определяем выходную геометрию в переменную Х.
Результатом будет массив точек в формате
PackedVector2Array, или если по простому обычный массив точек.
Мы можем подать его в данные в один из исходных полигонов, или же создать новую форму и подать эти данные туда.

В нашем случае мы подадим данные в полигон А.

-5

Запускаем код…и в результате мы не получим ничего :)

Выведем переменную Х в print для того чтобы понять с чем имеем дело :

-6

Если внимательно присмотреться, то можно заметить что массив содержит еще один массив.
Исправляем это в коде, и заранее выключаем видимость полигона
В чтобы он не мешал видеть результат:

-7
-8

Можно заметить, что теперь всё работает как и ожидалось.

Текстурирование полигона.

Как уже указывалось выше - дропаем картинку в раздел текстуры:

-9

По умолчанию текстура ложиться по координатам вьюпорта.

Но так как мы нарисовали полигон ближе к центру вьюпорта, заметно что текстура «уехала»

Жмем кнопку UV, для более тонкой настройки расположения текстуры.

-10

Тут ничего сложного. Есть привязка к сетке и все основные трансформации.

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

Подписывайтесь на канал, вступайте в группу в ВК, и не забывайте что у нас есть дискорд сервер.
Удачи в изучении годо !