Статья удалена
Полные версии кода будут находиться в конце поста.
Начинаем добавлять анимации персонажа.
Повороты
Для начала добавим персонажу умение поворачиваться в нужную сторону при движении влево и вправо.
В PlayerBehaviour получаем доступ к нашему спрайту через spriteRenderer.
Опция spriteRenderer.flipX по-умолчанию имеет значение false. Если задать ей значение true, то спрайт будет отзеркален по оси Х.
Тестируем
Состояние покоя (idle)
В папке Assets создаём папку Animations. В ней, создаём анимацию, которую мы назовем idle (персонаж находится в состоянии покоя).
Перетаскиваем нашу анимацию на объект Player слева в иерархии.
Теперь мы можем увидеть, что в него добавился новый компонетнт Animator.
Если перейти во вкладку Animator, то мы должны увидеть примерно следующее. Наш объект idle добавлен.
Нужные нам спрайты лежат Assets/BayatGames/Free Platform Game Assets/Character/Character Animation ( Update 1.8 )/Idle/1x.png
Мы использовали этот спрайт-карту (так оно, вроде, называется) в первой части, где нарезали её и использовали для спрайта персонажа.
Перетаскиваем окно Animation так, чтобы было видно сцену и персонажа.
Тыкаем на нашего персонажа в иерархии, чтобы в Animation появилась наша анимация idle. Выделяем все спрайты при помощи шифта, и перетаскиваем в поле с временной шкалой.
Немножко растянем спрайты по времени (синии ромбы над спрайтами), чтобы все выглядело получше - иначе анимация будет слишком быстрой, и незаметной.
Самый простой способ, выделить их при помощи шифта на временной шкале, и растянуть, потянув за синюю полосу, появившуюся справа.
Теперь персонаж "дышит". Не супер, но что поделать =)
Для того, чтобы увидеть это в игре, нужно ткнуть на нашу анимацию в ассетах, и жмакнуть чекбокс Loop Time в инспекторе.
Бег (run)
Создаём новую анимацию под названием "run" в папке Animations, и перетаскивам её на объект Player в иерархии.
Переходим во вкладку Animator.
Теперь создадим саму анимацию.
Находим нужные нам спрайты в Assets/BayatGames/Free Platform Game Assets/Character/Character Animation ( Update 1.8 )/Run/1x.png, и нарезаем их, как делали в первой части.
Открываем вкладку Animation, выбираем объект Player в иерархии.
Во вкладке Animation тыкаем run и переносим наши нарезаные спрайты на временную шкалу, где равномерно их "размазываем".
Наблюдаем за результатом.
Отлично. Теперь добавим анимацию в саму игру.
Для начала настроим переходы между анимациями в Animator.
Тыкаем на idle, и создаем переход (Make Transition), который протягиваем в run, затем делаем то же самое, но наоборот.
В итоге мы должны иметь 2 перехода idle => run и run => idle.
Для каждого из переходов проставляем опции, которые помогут не завершать анимацию по времени, а только по заданным условиям.
Создадим параметры для того, чтобы переключатсья между состояниями персонажа.
В частности, содадим int (целое число) параметр под именем state.
Пусть значение 1 будет бегом, значение 0 будет стоянием на месте (позже добавим сюда прыжки).
Задаём условия для переходов, как на картинке ниже:
idle => run , если state === 1
run => idle, если state === 0
Переключаем наш state, и наблюдаем за результатом.
Обновляем код в самом начале скрипта PlayerBehaviour. Нам нужен доступ к аниматору.
Благодаря этому, мы можем изменять наше значение state в методе updatePlayerPosition.
Тестируем, что у нас получилось.
Вполне не плохо. Осталось анимировать прыжок и падение + добавить функцию-менеджер нашего state.
Полный код
PlayerBehaviour
CameraBehaviour (в этой части не изменялся)
Скорее всего, нужно будет завести себе репу для всего этого дела, чтобы не выкладывать сюжа простыни кода. Займусь, если будет время ;)