Найти в Дзене
NoT ZaTroTing

Создаём платформер в Unity2D #4

Здравствуйте! Сегодня мы продолжим создавать платформер на Unity3D. На сей раз будет разбор анимации, а именно как её создать и реализовать.

Для начала давайте создадим отдельную папку для анимаций (Animations). Далее нам надо пройти в Window\Animation\Animation (или нажать сочетание клавиш Ctrl+6):

Итак, у Вас открылось окно, чтобы начать с ним работать, нужно выбрать объект, которому мы хотим добавить анимацию, в окне Иерархии. Затем нажмите Create и назовите анимацию. Начнём с передвижения:

Красным выделена панель, где можно установить количество кадров в секунду у анимации
Синим (в окне Animation) - список всех анимаций объекта
Желтым - панель размещения кадров
Красным выделена панель, где можно установить количество кадров в секунду у анимации Синим (в окне Animation) - список всех анимаций объекта Желтым - панель размещения кадров

Давайте перенесём наши спрайты (кадры) на панельку с временной шкалой. Чтобы сделать это более просто, выберите 1 кадр и с зажатым Shift'ом нажмите на последний: так у Вас выберутся все кадры между этих спрайтов. Нажмите на Play и взгляните на своего персонажа в окне Сцены: он шевелится. Но если он оказался маленьким, значит вы забыли поменять Pixels Per Unit у спрайтов.

Если персонаж движется слишком быстро или слишком медленно, поменяйте значение Samples (чем больше, тем быстрее).

Итак, у нас получилась анимация движения вправо, но нам нужно и влево. Для этого создадим новую анимацию, перенесём те же кадры, но добавим свойство Flip X:

-3

Теперь добавьте остальные анимации самостоятельно.

Дальше открываем Animator, удаляем все созданные нами анимации, и добавляем Blend Tree:

Т.к. у нас персонаж может двигаться по вертикали и горизонтали, выбираем Blend Type как 2D Simple Directional, создаём 2 параметра типа float X и Y и добавляем столько полей, сколько у нас анимаций:

Итак, у вас есть координатная плоскость. Установите координаты точек:

Как вы могли заметить прыжок/падение вправо находятся на X=0. Я не совсем уверен, почему ТАК работает, а с X=1 не работает
Как вы могли заметить прыжок/падение вправо находятся на X=0. Я не совсем уверен, почему ТАК работает, а с X=1 не работает

Дальше обращаемся уже к коду.

Добавляем animator, чтобы мы могли взаимодействовать с редактором Unity, а именно а анимациями, и lookDirection, чтобы знать, куда "смотрит" наш персонаж (если он будет стоять, то взгляд будет вправо):

-7

Ну и добавим еще 5 строк в Update:

-8

Сейчас все разберём:

  1. Здесь мы объявляем переменную Vector2, чтобы отслеживать нажатия по горизонтали
  2. На lookDirection устанавливается вектор нашего движения
  3. В animator передаётся "взгляд" персонажа.

Чуть подробнее про "взгляд". По сути мы лишь смотрим на нажатие клавиш движения по горизонтали (они установлены в Unity по умолчанию) и смотрим, движется ли персонаж по вертикали. Затем из этого создаётся вектор с соответствующими координатами и они же передаются в координатную плоскость Аниматора.

Теперь Вы можете проверить Ваши усилия в дейстсвии!

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