info@gk-studio.com
+38 (067) 572 93 74
mclaude_gosha

Создание персонажа 2D игры в Unity 3D

Продолжаем изучать принципы создания 2D игры с помощью Unity 3D.

В предыдущей статье мы познакомились с POT-текстурами и научились создавать землю и фон для нашей игры.

Сейчас пришло время создать главного героя и научить его бегать, прыгать и приседать.

Подготовка спрайт-листа персонажа

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

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

Как известно, анимация — это последовательное отображение статических кадров, каждый из которых соответствует той или иной стадии движения персонажа, как в классической мультипликации.

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

Рисование анимированного персонажа — отдельная тема и здесь мы не будем ее рассматривать.

Допустим, у нас уже есть спрайт-лист для анимации персонажа. Не забываем, спрайт-лист должен быть POT-текстурой, то есть иметь размеры из ряда 256, 512, 1024, 2048. Если при этом изображение будет содержать пустые прозрачные области, ничего страшного, хотя конечно лучше стараться сводить их к минимуму.

На самом деле совершенно не обязательно собирать все кадры анимации в один файл спрайт-листа. Можно использовать просто набор отдельных картинок, или несколько спрайт-листов для одного персонажа. Но удобнее хранить анимацию каждого персонажа в отдельном спрайт-листе: так не загромождается вкладка Assets и проще находить нужный исходник.

Чтобы Unity работал с импортированным изображением не как с одной картинкой, а как со спрайт-листом, то есть разбил исходное изображение на кадры, после испорта нужно в окне Inspector следует щелкнуть по кнопке Sprite Mode выбрать режим Multiple.

Чтобы Unity разбил спрайт-лист на отдельные кадры, нужно нажать кнопку Sprite Editor окна Inspector, щелкнуть по кнопке Slice, расположенной в левом верхнем углу одноименного окна, выбрать тип разбиения Automatic и нажать кнопку Apply в правом верхнем углу.

Unity сам разобьет спрайт-лист на отдельные кадры, с каждым из которых можно работать, как с обычным спрайтом.

Иногда бывает, что автоматическое разбиение не дает приемлемого результата и несколько спрайтов объединяются в один. Такое бывает, если расстояние между кадрами в спрайт-листе слишком маленькое. Переделайте свой спрайт-лист так, чтобы между кадрами были достаточные промежутки, и повторите операцию.

Итак, чтобы получить спрайт-лист, готовый к работе в Unity, нужно выполнить следующие действия:

  1. Импортировать заранее подготовленный и приведенный к POT-текстуре спрайт-лист в Unity
  2. Выбрать его разрешение в окне Inspector и нажать Apply, чтобы применить компрессию
  3. Нажать кнопку Sprite Mode в окне Inspector и выбрать режим Multiple.
  4. Нажать кнопку Sprite Editor в окне Inspector, щелкнуть по кнопке Slice, выбрать тип разбиения Automatic и нажать кнопку Apply.

В результате в панели Assets у вашего спрайт-листа появится стрелочка, щелкнув по которой, вы можете его развернуть и он будет отображаться примерно так, как на рисунке ниже.

Все, теперь наш спрайт персонажа подготовлен, и мы можем его анимировать.

Управление персонажем

Взаимодействие всех объектов в Unity происходит только между их коллайдерами, а не спрайтами.

Именно коллайдеры мы перемещаем, определяем столкновения и пересечения между ними.

То есть если у нашего героя будет квадратный коллайдер размером 1 на 1 метр, а к нему мы приделаем спрайт размером 5 на 5 метров, все столкновения будут рассчитываться для коллайдера, а не для спрайта.

Поэтому анимацию в Unity  можно разделить на две составляющие: перемещение собственно объектов, то есть их коллайдеров, и спрайтовая анимация, то есть отображение последовательности картинок.

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

Например, переход между анимацией покоя и анимацией бега происходит, если нажата соответствующая кнопка.

Поэтому снперва сделаем управление персонажем.

Возьмем любой спрайт из нашего спрай-листа, и перетащим его на сцену.

Анимация персонажа