Найти в Дзене
Игровой движок Godot engine

№182/2. Дополнение.

Оглавление

В данной статье пробежимся по основным «проблемным» местам метода blend_rect.

Альфа канал

Наверное первое, что скорее всего вас побеспокоит - игнорирование альфа канала спрайта на котором вы собственно «рисуете» другие спрайты.

Это легко лечится через шейдер. Всё что вам нужно - просто подать альфа канал с оригинального спрайта.
Например вот так:

-2

Далее про поворот.

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

-3

Но если теперь запустить проект и попытаться никидать следы пуль получим не совсем то что хотелось :

-4

Они стали появляться не там где находится наш курсор. И это можно обьяснить тем, что когда мы берем локальные координаты мышки , мы отталкиваемся от центра трансформаций . А они в нашем текущем случае сдвинуты в центр.

Пропишем этот сдвиг в коде и всё станет работать как нам нужно.

-5

Поворот «впечатываемого» спрайта.

Тут нас немного обделили.
Крутить
image как нам захочется увы нельзя. По крайней мере методами которые есть…а есть тут только поворот на 90 и 180 градусов.

-6

Возможно как то можно брать весь массив пикселей , крутить их через get\set pixels.. или шейдер. Если у вас есть подобное решение - пишите в комментарии.

Сохранение в файл.

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

Для этого есть куча методов

-7

Это наверное и всё что я хотел упомянуть.

Удачи в разработке!