Статья удалена
Полные версии кода будут находиться в конце поста.
В данном посте я напишу менеджер анимаций персонажа, и научу его прыгать и падать.
Пишем менеджер анимаций
В прошлый раз мы остановились на том, что научили персонажа переходить от бега к состоянию покоя и наборот при помощи выбора номера анимации через animatorComponent в коде PlayerBehaviour.
Мы договорились, что при значении 1 мы прогрываем анимацию бега, при 0 персонаж находится в состоянии спокойствия.
Использование enum (перечисление) - самое то для нашей задачи.
Кратко объясню, как enum работает.
При помощи ключевого слова enum создаётся список. В котором, по-умолчанию, элементы нумеруются от нуля.
Однако, мы можем задать и другое значение, если хотим. Например, как в коде ниже.
В нём я задал значение 42 для magicNumber, то есть при преобразовании magicNumber в int, результатом будет 42.
Если хотите, можете поиграть с кодом в специальном C# фиддле.
Используем enum для нашего менеджера анимаций.
Для этого создадим новый список AnimationState в PlayerBehaviour.
После этого можно обновить метод updatePlayerPosition + создадим метод setAnimationState, который и будет выбирать текущую анимацию.
Проверим, не поломали ли чего.
Все работает, ничего не поломано =)
Добавляем анимации прыжка и падения
Находим нужные нам спрайты по пути Assets/BayatGames/Free Platform Game Assets/Character/Character Animation ( Update 1.8 )/Jump/1x.png
Нарезаем, как делали это ранее.
Создаём анимации jump и fall, затем перетаскиваем их на игрока, чтобы они у нему привязались.
Не забудем проставить для обеих анимаций чекбокс на Loop Time.
К сожалению, в данном наборе ассетов есть всего два спрайта, которые нам подходят. Реализуем их.
Прыжок (1x_0)
Падение (1x_1)
Анимации созданы, переходим в Animator.
Создаём связи, как на скрине ниже.
Не забываем обнулять опции для каждой связи, иначе анимации будут прерываться.
Теперь проставляем условия для каждой связи.
Напоминаю:
- 0 - idle
- 1 - run
- 2 - jump
- 3 - fall
Список условий
- idle => run , если state Equals 1 (проставляли в прошлой части)
- run => idle, если state Equals 0 (проставляли в прошлой части)
- run => jump, если state Equals 2
- jump => run, если state Equals 1
- idle => jump, если state Equals 2
- jump => idle, если state Equals 0
- jump => fall, если state Equals 3
- fall=> idle, если state Equals 0
Теперь зададим доп условия для новых значений в методе setAnimationState из скрипта PlayerBehaviour.
Проверяем работу скрипта.
Похоже, всё в порядке, анимации работают.
В следующий раз попробуем добавить сбор предметов и выведение счёта.
Полный код
PlayerBehaviour
CameraBehaviour (в этой части не изменялся)