Как сделать спрайт для игры
Спрайтовая графика: руководство по созданию спрайтов от А до Я
Спрайтовая графика — одна из старейших технологий для анимации персонажей. Спрайтами называют картинки в 2D-играх, из которых состоят игровые персонажи, монстры, движущиеся объекты и др.
Первая спрайтовая графика датируется началом 80-х годов. Но самое интересное, что она до сих пор пользуется популярностью при создании 2D-игр, браузерных игр, а иногда и в 3D-играх, когда нужно анимировать удаленный объект или создать анимацию, на которой не зациклено внимание игрока. Например:
огонь после отдаленного взрыва,
с технической стороны спрайты имеют меньш ий вес, чем 3D-объект;
создать спрайт легче, чем 3D-объект;
при помощи спрайтовой графики можно достаточно быстро анимировать любой нарисованный объект с меньшими усилиями;
Спрайтовая графика
Один спрайт — это неподвижная картинка. Несколько быстро сменяющихся картинок из одной серии создают анимацию, то есть спрайтовую анимацию. Самой узнаваемой спрайтовой анимацией является 8-битный Марио ; в состав его анимации входило всего 12 картинок:
2 для левого прыжка,
2 для правого прыжка,
4 для передвижения влево,
4 для передвижения вправо.
Создание спрайтов
Спрайтовая графика создается в три этапа:
Необходимо создать изображения для анимации.
Далее эти изображения нужно объединить в одном кадре и наладить из них анимацию.
Расположить анимацию на экране.
GameM ak er Studio, который является не просто редактором для спрайтов, но и полноценным движком для 2D-игр;
для полноценных 2D-игр можно использовать соответствующие игровые движки;
для бра у зерных игр используют HTML5, JavaScript и CSS;
можно использовать знания Java или C++;
Заключение
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Cocos2d-x — Работа со спрайтами
Предисловие
Эта статья является второй, из серии переводов документации к игровому движку Cocos2d-x. Если вы не видели первую часть перевода, то советую сначала ознакомится с ней:
Cocos2d-x — Основные понятия
А теперь продолжим!
Что такое спрайт
Создание спрайтов
Существуют различные способы создания спрайтов, зависящие от того что вам необходимо выполнить. Вы можете создать спрайт, используя изображения различных графических форматов, включая: PNG, JPEG, TIFF и другие. Давайте рассмотрим некоторые методы создания и поговорим о каждом из них.
Создание простого спрайта
Спрайт может быть создан путем указания файла изображения.
Код выше создает спрайт, используя изображение mysprite.png. В результате, созданный спрайт использует целое изображение. Он имеет те же размеры, что и mysprite.png. Если файл изображения 200 x 200 то результирующий спрайт тоже будет 200 x 200.
Создание спрайта с использованием Rect (прямоугольника)
В предыдущем примере, созданный спрайт имел тот же размер, что оригинальное изображение. Если вы хотите создать спрайт использующий только часть файла изображения, вы можете сделать это путем указания прямоугольного участка – Rect.
Rect имеет 4 значения: origin x, origin y, width и height.
Rect берет левый верхний угол за начало координат. Это противоположно тому принципу, что мы использовали, когда устанавливали позицию на экране, отчитывая координаты от левого нижнего угла. Таким образом, результирующий спрайт – только часть исходного файла изображения. В этом случае, размер спрайта 40 x 40 начиная от левого верхнего угла.
Если вы не зададите Rect, Cocos2d-x автоматически будет использовать полную высоту и ширину заданного изображения. Взгляните на код ниже. Если вы используете изображение с размерами 200 x 200, то следующие два выражения будут иметь одинаковые результаты.
Создание спрайта из текстурного атласа (Sprite Sheet)
Sprite sheet – это способ объединения спрайтов в один файл. Использование sprite sheet помогает добиться лучшей производительности, путем пакетной обработки вызовов рисования. Они могут также сохранить дисковую- и видео-память, если упаковать спрайты более эффективно (обычно требуются специальные инструменты). Вы прочитаете больше об этом в продвинутой главе, но это только один из многих стандартных методов повышения производительности игр.
При использовании sprite sheet, он сначала загружается в SpriteFrameCache. SpriteFrameCache – это класс кеширования, который сохраняет объекты SpriteFrame, для быстрого доступа к ним. SpriteFrame загружается один раз и сохраняется в SpriteFrameCache.
Вот пример sprite sheet:
Давайте рассмотрим подробнее, что происходит:
Как вы можете видеть, sprite sheet объединяет все спрайты в один файл и минимизирует лишнее пространство.
Загрузка Sprite Sheet
Вероятнее всего, вы будете осуществлять загрузку в AppDelegate:
Теперь, когда мы имеем текстурный атлас загруженный в SpriteFrameCache, мы можем создать спрайт.
Создание спрайта из SpriteFrameCache
Это создание спрайта, путем вытягивания его из SpriteFrameCache.
Создание спрайта из SpriteFrame
Еще один способ создать такой же спрайт – получить SpriteFrame из SpriteFrameCache, и затем создать спрайт при помощи SpriteFrame. Пример:
Инструменты для создания Sprite Sheets
Создание sprite sheet вручную – утомительный процесс. К счастью, есть инструменты, которые могут генерировать их автоматически. Эти инструменты предлагают множество возможностей для максимальной оптимизации ваших спрайтов!
Здесь представлено несколько инструментов:
Манипуляции со спрайтами
После создания спрайта, вы получите доступ к разнообразным его свойствам, которыми можно манипулировать.
Опорная точка и позиция
Опорная точка (Anchor Point) – это точка, которую вы задаете, чтобы указать, какая часть спрайта будет использоваться, при установке его координат. Опорная точка влияет только на свойства связанные с трансформацией. Они включают: scale, rotation, skew. И не включают: color и opacity. Опорная точка использует систему координат от нижнего левого угла. Учитывайте это, при выполнении своих расчетов. По умолчанию, все Node объекты имеют стандартную опорную точку (0.5, 0.5).
Задать опорную точку просто:
Чтобы представить это визуально:
Свойства спрайтов, на которые влияет опорная точка
Использование опорной точки влияет только на свойства связанные с трансформированием. Такие как: scale, rotation, skew.
Position
Опорная точка влияет на позицию спрайта, поскольку именно эта точка используется в качестве основной при позиционировании. Давайте посмотрим, как это происходит. Обратите внимание на цветную линию, и то где находятся спрайты относительно ее. Важно отметить, что такой эффект был получен, лишь путем изменения опорной точки. Мы не использовали setPosition() для достижения этого:
Позицию спрайта можно также задать методом setPosition().
Rotation
Изменяет вращение спрайта, на положительное или отрицательное число градусов. Положительные значения поворачивают спрайт по часовой стрелке, в то время как отрицательные поворачивают против часовой стрелки. Стандартное значение – 0.0
Scale
Изменяет масштаб спрайта, либо по каждой оси отдельно, либо равномерно по обеим. Стандартное значение – 1.0
Изменяет наклон спрайта, либо отдельно по осям x и y, либо равномерно для всех. Стандартное значение – 0.0
Свойства спрайта, на которые не влияет опорная точка
Существует несколько свойств объекта Sprite, на которые не влияет опорная точка. Почему? Потому что они изменяют только внешний вид, подобно свойствам color и opacity.
Color
Изменяет цвет спрайта. Это делается при помощи Color3B. Мы еще не сталкивались с Color3B, но это просто объект, представляющий собой RGB цвет. RGB цвет включает в себя 3 значения (Red, Green, Blue), от 0 до 255. Cocos2d-x также предоставляет предопределенные цвета, из которых вы можете выбрать. Использование их будет немного быстрее, поскольку они уже определены заранее. Вот некоторые примеры:
Opacity
Изменяет непрозрачность спрайта на заданное значение. Это свойство принимает значения от 0 до 255, где 255 – полная не прозрачность, а 0 – абсолютная невидимость. Стандартное значение 255 (полная видимость).
Полигональные спрайты
Полигональный спрайт это тоже спрайт, который используется для вывода 2d изображения. Однако, в отличие от нормального спрайта, который является прямоугольником, состоящим из двух треугольников, полигональный спрайт состоит из серии треугольников.
Зачем использовать полигональный спрайт?
Ответ прост — производительность!
Существует много технических терминов о скорости пиксельного заполнения, которые мы могли сюда вывалить, но вам просто нужно понять, что PolygonSprite рисуется на основе формы вашего спрайта, а не прямоугольника с избыточной площадью. Этот способ прорисовки, позволяет сэкономить на ненужной работе. Рассмотрим пример:
Заметили различия между левой и правой версиями?
Слева, типичный Sprite, который прорисовывается, с использованием двух треугольников.
Справа, PolygonSprite, рисующийся большим количеством маленьких треугольников.
Стоит ли идти на такой компромисс, чисто по соображениям производительности, зависит от ряда факторов (форма/детализация спрайта, размер, количество нарисованного на экране, и так далее), но в основном, вершины дешевле пикселей на современных графических процессорах.
AutoPolygon
AutoPolygon – это вспомогательный класс. Его цель – создавать 2d полигональную сетку на основе изображения.
Существуют функции для каждого шага обработки этого процесса, от определения всех точек, до триангуляции. Результат может быть передан в функцию create объекта sprite, для создания PolygonSprite. Пример:
Библиотека Pygame / Часть 2. Работа со спрайтами
Вторая часть серии руководств «Разработка игр с помощью Pygame». Она предназначена для программистов начального и среднего уровней, которые заинтересованы в создании игр и улучшении собственных навыков кодирования на Python. Начать стоит с урока: «Библиотека Pygame / Часть 1. Введение».
Что такое спрайт?
Спрайт — это элемент компьютерной графики, представляющий объект на экране, который может двигаться. В двухмерной игре все, что вы видите на экране, является спрайтами. Спрайты можно анимировать, заставлять их взаимодействовать между собой или передавать управление ими игроку.
Для загрузки и отрисовки спрайтов в случай этой игры их нужно добавить в разделы “Обновление” и “Визуализация” игрового цикла. Несложно представить, что если в игре много спрайтов, то цикл довольно быстро станет большим и запутанным. В Pygame для этого есть решение: группировка спрайтов.
Набор спрайтов — это коллекция спрайтов, которые могут отображаться одновременно. Вот как нужно создавать группу спрайтов в игре:
Теперь этой возможностью можно воспользоваться, добавив группу целиком в цикл:
Создание спрайта
Можно переходить к созданию первого спрайта. В Pygame все спрайты выступают объектами. Если вы не работали с этим типом данных в Python, то для начала достаточно знать, что это удобный способ группировки данных и кода в единую сущность. Поначалу это может путать, но спрайты Pygame — отличная возможность попрактиковаться в работе с объектами и понять, как они работают.
Начнем с определения нового спрайта:
Дальше необходимо определить rect спрайта. Это сокращенное от rectangle (прямоугольник). Прямоугольники повсеместно используются в Pygame для отслеживания координат объектов. Команда get_rect() оценивает изображение image и высчитывает прямоугольник, способный окружить его.
rect можно использовать для размещения спрайта в любом месте. Начнем с создания спрайта по центру:
Сейчас, если запустить программу, по центру окна будет находиться зеленый квадрат. Увеличьте значения WIDTH и HEIGHT в настройках программы, чтобы создать достаточно пространства для движения спрайта в следующем шаге.
Движение спрайта
Это значит, что при каждом игровом цикле x-координата спрайта будет увеличиваться на 5 пикселей. Запустите программу, чтобы посмотреть, как он скрывается за пределами экрана, достигая правой стороны.
Исправить это можно, заставив спрайт двигаться по кругу — когда он добирается до правой стороны экрана, просто переносить его влево. Это легко сделать, используя элемент управления rect спрайта:
Так, если левая сторона rect пропадает с экрана, просто задаем значение правого края равное 0:
Теперь можно видеть, как спрайт будто бы двигается по кругу.
Код урока:
В следующем уроке речь пойдет о том, как использовать арт в спрайтах — перейти от обычного квадрата к анимированному персонажу.
Как создать спрайт-лист с игровым персонажем в Affinity Designer
Если вы когда-нибудь хотели попробовать себя в разработке игр и дизайне персонажей, это руководство для вас! Сегодня мы будем создавать спрайт-лист для сказочного птицеобразного существа для мобильных и видеоигр при помощи различных инструментов и функций в Affinity Designer. Мы пройдём через весь процесс от создания контура эскиза до раскраски и создания ряда поз, которые можно будет использовать в анимации. Давайте начнём!
1. Рисуем базовые части персонажа
Шаг 1
Я обычно начинаю создавать персонажа с эскиза и попытки найти нужное изображение, интересную форму и необычный внешний вид. В поиске оригинальных и необычных решений объединяйте вымышленные детали животных или объектов, которых встречаете в реальности. Вы можете вдохновиться просмотром разделов с игровыми персонажами или игровыми спрайтами на Envato Market, либо поискать спрайты с игровыми персонажами на Pinterest. Попытайтесь придумать свои собственные оригинальные идеи, создавая неожиданные комбинации.
Когда создадите несколько вариаций, выберите одну, которая понравится больше всего, и продолжайте с ней работать. Протестируйте различные позы и выражения лиц.
Я делаю множество приблизительных эскизов, и это помогает мне понять, как двигается мой персонаж, выглядит ли он интересно и оригинально, вписывается ли в окружающую среду или концепт нашей будущей игры и т.д.
Когда я, наконец, довольна сказочным, загадочным видом этого маленького парня, то могу представить эскиз, с которым мы будем работать в этом руководстве. Можете скачать его прямо отсюда – просто кликните правой кнопкой мыши на картинке и сохраните её на свой компьютер.
Шаг 2
Мы будем работать с Векторным режимом Affinity Designer, используя его векторные функции для создания спрайт-листа нашего персонажа для видеоигр, которого легко можно анимировать в различных положениях.
Давайте создадим Новый документ размером 600 х 800 пикселей. Используйте Инструмент «Поместить изображение» для импорта эскиза и расположения в середине холста.
Шаг 3
Выделите обе созданные нами фигуры и примените Операцию добавления на верхней контекстной панели инструментов. Таким образом мы объединили оба элемента в единую фигуру.
Теперь возьмите Инструмент «Эллипс» (М) для создания глаза и добавьте ещё пару эллипсов, чтобы сделать глаз более детальным. Следуйте линиям эскиза, чтобы фигуры соответствовали эскизу.
Шаг 4
При помощи Инструмента «Карандаш» (N) нарисуйте длинную, дугообразную линию поперёк лица и, если необходимо, измените её при помощи Инструмента «Узел» (А). Мы можем изменить Стиль, Ширину и другие параметры нашей линии на панели Обводки (вы найдёте её в одной из вкладок возле панели Цветов).
Здесь давайте установим Ширину на 11 и перейдём вниз к выпадающему окну «Нажатие». Здесь мы можем изменить ширину отдельных сегментов линии при помощи графика. Выделите правую точку кривой на графике и перетащите её вниз, чтобы сделать правую часть обводки тоньше (нос персонажа).
Шаг 5
Теперь возьмите Инструмент «Прямоугольник» (М) – перейдём к телу. Создайте прямоугольник, подстроив его под тело, и Преобразуйте его в Кривые на верхней контекстной панели инструментов. Перейдите к Инструменту «Узел» (А) и начните сдвигать нижние узлы в разные стороны друг от друга, сделав нижнюю часть шире.
Выделите оба верхних узла и перетащите их вверх, чтобы закрыть голову нашего персонажа. Затем выделите верхний правый узел и используйте функцию «Конвертировать в плавную линию» на верхней контекстной панели инструментов, сделав правую часть прямоугольника плавной и скруглённой.
Шаг 6
Теперь используйте Инструмент «Узел» (А) для изменения левой части тела, добавив больше узлов, сделав углы плавными и контур – соответствующим эскизу.
Шаг 7
Давайте добавим перья в нижней части тела, сформировав что-то вроде юбки. Возьмите Инструмент «Эллипс» (М) и сформируйте сжатую фигуру в нижней левой части тела. Нажмите Option-Shift и перетащите фигуру вправо, создав копию. Повторите то же действие, создав больше копий и заполнив всю нижнюю часть.
Наконец, выделите фигуру тела и перья, перейдите к верхней контекстной панели инструментов и примените «Добавить операции». Отлично! Теперь мы объединили элементы в единую фигуру.
Шаг 8
Теперь переходим к ноге. Давайте сделаем её простой: нарисуйте прямую вертикальную линию с маленькой ступнёй внизу. Перейдите на панель Обводки и добавьте больше глубины ноге, сделав её толще. Установите значение Ширины на 60 и примените график Нажатия, чтобы сделать нижнюю часть тоньше, как показано на скриншоте ниже.
Шаг 9
Теперь нам нужно превратить обводку в фигуру, чтобы мы могли изменять её, добавлять детали, контуры и т.д. Выделив ногу, перейдите в Слой > Разобрать обводку. Фигура выглядит достаточно хорошо, хотя у неё могло бы быть множество узлов.
Т.к. фигура всё ещё выглядит плавной, может быть достаточно затруднительно и времязатратно удалять все ненужные узлы вручную. Здесь у нас есть два варианта: либо оставить фигуру как есть с кучей узлов, либо, если вы – за качество, создать новую фигуру.
Здесь мы можем использовать один из инструментов рисования – либо Инструмент «Карандаш» (N), либо Инструмент «Перо» (P). Я предпочитаю Инструмент «Перо» (P). Просто обведите созданную ногу по верху, создав плавную, скруглённую фигуру, и при помощи Инструмента «Узел» (А) двигайте узлы вокруг.
Шаг 10
У нас есть двухслойная перьевая «юбка» на нашем эскизе, давайте добавим второй слой с телом, покрытым перьями. Скопируйте фигуру тела и вытяните её вниз, сделав фигуру высокой, чтобы она вписалась в эскиз. Удалите верхнюю часть вытянутой фигуры, оставив только юбку. Удалите верхнюю часть растянутой фигуры, оставив только юбку. Можете сделать это при помощи Инструмента «Узел» (А), выделив все ненужные верхние узлы и удалив их.
Как вариант, вы просто можете стереть верхнюю часть фигуры Инструментом «Векторная обрезка». Однако, я предпочитаю первый метод, т.к. Инструмент «Векторная обрезка» оставляет стёртую часть спрятанной внутри обтравочной маски. Во многих случаях это может быть достаточно полезно, например, когда вам нужно сохранить фигуру, но сейчас нам это не нужно.
Шаг 11
Теперь давайте сформируем стилизованную руку или крыло нашего птицеобразного персонажа. Создайте эллипс под размер руки на эскизе и Преобразуйте его в Кривые. Слегка перетащите обе боковые опорные точки, сделав фигуру шире внизу. Добавьте ещё один эллипс, сделав руку согнутой в локте.
Шаг 12
Преобразуйте второй эллипс в Кривые и используйте Инструмент «Узел» (А), чтобы двигать линии и подогнать их под эскиз. При помощи Операции добавления объедините фигуры и сделайте все узлы плавными.
Шаг 13
Наконец, при помощи Инструмента «Карандаш» (N) нарисуйте маленькую кисточку перьев на локте и объедините её с рукой.
Отлично! Контуры готовы. Теперь добавим цвета!
2. Применяя цвета и варьируя позы
Шаг 1
Мы будем работать с тёмно-фиолетовой палитрой. Я обычно выбираю цвета при помощи панели Цветов и Инструмента «Пипетка», которые можно найти над цветовым колесом на панели Цветов.
Постарайтесь сделать верхние части персонажа светлее нижний частей, чтобы отделить элементы друг от друга, сделав их выделяющимися. Сделайте лицо светло-бежевым, создав яркий контраст, чтобы показать главный элемент персонажа, привлекающий внимание зрителей.
Шаг 2
Теперь давайте поработаем над лицом. Примените цвета к всем трём эллипсам глаза, сделав его внутреннюю часть темнее, создав дыру. Давайте изменим красную линию поперёк лица. Сделайте её толще, увеличив Толщину обводки на панели Обводки. Вырежьте (Command-X) линию, выделите бежевую фигуру лица и перейдите в Редактировать > Вставить внутрь. Отлично! Теперь линия находится внутри фигуры лица, как внутри обтравочной маски. Мы всё ещё при желании можем изменить её.
Шаг 3
Давайте добавим немного теней, сделав персонажа более детальным. Возьмите Инструмент «Карандаш» (N) и начните рисовать фигуру, частично закрывающую левую сторону тела. Она не должна быть идеальной, т.к. мы её Вырежем (Command-X) и затем перейдём в Редактировать > Вставить внутри фигуры тела. Сделайте тень слегка темнее тела.
Шаг 4
Используйте Инструмент «Эллипс» (М) для добавления группы мелких кругов вдоль края тени, перекрывающих друг друга и придающих тени текстурный вид. Удерживайте клавишу Shift, чтобы сделать круги идеально ровными.
Добавьте тёмно-фиолетовый эллипс для тени за овалом лица (несколько раз нажмите Command-[, чтобы сдвинуть эллипс за фигуру лица). Добавьте больше деталей, сформировав тёмную тень на нижней «юбке», и добавьте синий оттенок с пёстрыми кругами на правой стороне тела персонажа. Наконец, сделайте руку намного светлее тела, отделив её от остальных элементов.
Не забудьте добавить две маленькие, скруглённые тени на ногах, сделав их более трёхмерными.
Шаг 5
Снизьте Непрозрачность ярко-синего блика на панели Слоёв, чтобы сделать его более мягким.
Если вы хотите поэкспериментировать с цветами, сделать их более яркими, используйте Инструмент «Пипетка», чтобы взять цвет одного элемента и применить его к другому элементу. Если вы ещё не пользовались этим инструментом в Affinity Designer, сначала он может показаться сложным, однако и очень удобным.
Найдите иконку Пипетки на панели Цвета и перетащите её прямо на свою картинку. Вы увидите линзу, которая поможет выбрать нужный цвет, который появится возле иконки Пипетки на панели Цвета. Теперь можете применить его к любой выбранной фигуре, просто кликнув на маленьком цветном кружке на панели Цвета.
Шаг 6
Давайте добавим больше деталей нашему персонажу. Добавьте тени ко всем частям тела, включая голову и руку (если ещё не добавили) и создайте ещё несколько пятен на лице, чтобы сделать его более текстурным.
Поместите ещё пару эллипсов внутри глаза, понемногу делая цвета ярче, чтобы глаза получились сияющими. Вы можете видеть мою панель Слоёв на скриншоте ниже, на котором изображены все части группы глаза.
Шаг 7
Наш персонаж уже выглядит хорошо на этом этапе, но если мы хотим видеть его на детальном фоне для видеоигры, он может сливаться с фоном, если цветовая палитра элементов похожа. Нам нужно сделать нашего персонажа более выделяющимся на любом фоне. Он должен быть привлекательным и хорошо видимым при первом взгляде. Вот простой способ визуально отделить персонажа: нам нужно использовать контуры! Чем толще контур вокруг персонажа, тем более выделяющимся он становится!
Выделите руку, перейдите на панель Цветов и примените чёрную Обводку со значением Ширины 3. Добавьте контур лицу и ногам. Вам может понадобиться выделить элементы внутри группы при помощи панели Слоёв, чтобы применить Обводку.
Шаг 8
Что касается тела, я хочу применить единую обводку ко всей фигуре. Тело состоит из двух элементов, поэтому мы применим небольшой приём. Выделите обе части тела и скопируйте их (Command-C > Command-V). Вы увидите копии на панели Слоёв. Выделите копии и объедините их в единую фигуру при помощи Операции добавления.
Теперь мы можем удалить цвет Заливки объединённой фигуры на панели Цветов и применить жирную Обводку 4, сохраняя контур поверх тела.
Шаг 9
Давайте посмотрим, что у нас получилось. Мы создали фантазийного персонажа, состоящего из тела (вместе с лицом), пары крылатых рук и пары забавных ног. И этого нам хватит для создания двигающегося игрового спрайта! Убедитесь, что вы Сгруппировали (Command-G) все части на панели Слоёв, чтобы работа оставалась аккуратной и единой.
Теперь мы можем создать определённый набор поз, которые будет показывать наш персонаж во время игры. Вы можете поискать раздел со спрайт-листом для игрового персонажа на GraphicRiver, чтобы увидеть, какие позы обычно используются в играх, или создать свои.
Здесь я представила базовые позы, просто двигая части нашего спрайта – стоя, в беге, в прыжке или в обмороке. Обратите внимание, что я удалила сияние из глаз в обморочной позе, чтобы персонаж выглядел более бессознательным.
Победа! Наш спрайт-лист для персонажа фантазийной игры готов!
Отличная работа! Мы только что закончили создание нашего птицеобразного создания и сделали спрайт-лист из нескольких простых поз, которые можно использовать в анимации. Надеюсь, вы нашли для себя полезные приёмы и советы, которые помогут вам получше узнать Affinity Designer или создать несколько новых, уникальных персонажей и спрайт-листы для игр для ПК, браузера или телефонов.
Если хотите получить готовый векторный EPS-файл с нашей птичкой, включая детальные рамки для каждой позы, взгляните на этот спрайт-лист. Его можно использовать для простой анимации.
Наслаждайтесь созданием новых персонажей и не забудьте поделиться своими результатами!