King, Witch and Dragon. DevLog #6

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

В атаку!

Персонаж может атаковать из трёх основных состояний:

  • на земле
  • в воздухе
  • на стене или потолке

Атака на земле

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

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

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

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

Атака в воздухе

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

Атака на стене и потолке

Когда персонаж находится на стене или потолке ситуация обстоит немного иначе.

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

Персонаж может атаковать в четырёх направлениях - влево, вправо, вверх и вниз, но при условии, что в этом направлении нет стены или потолка. Также в этом состоянии персонаж не может совершать комбо и вседа вынужден возвращаться в нейтральное положение, поэтому время между атаками больше, чем на земле или в воздухе.

Контекстные анимации

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

Парение на крыльях летучей мыши

Проанализировав все способности персонажа, я пришёл к выводу, что двойной прыжок наименее полезен, по сравнению с другими способностями (и бросок гадюки и щупальце позволяли преодолевать значительно бОльшие расстояния).

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

После того, как я выложил эту анимацию в сообществе ВКонтакте, в комментариях предложили, что было бы здорово, если бы персонаж заранее готовился к приземлению. Мне показалось это хорошей идеей и я добавил распознавание приблежающейся земли и соответствующую анимацию. Работает, кстати, и в случае "приземления" на стену ( с помощью паучьих лап).

Скольжение по крутому склону

В обычной ситуации, когда персонаж оказывается на крутом склоне (круче 45 градусов), он выпускает паучьи лапы и спокойно движется в нужном направлении. Но что если у персонажа уже нет этой способности? Тогда придется скользить вниз и для этого нужна соответствующая анимация.

Наверное, так скользить босиком очень больно... но что поделать, у этого парня вообще жизнь не задалась.

Карабканье на уступ

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

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

Смерть и возрождение

Хоть в игре ещё нет врагов и некому убивать персонажа, я сделал анимации смерти и возрождения. Идея сделать их с помощью крыс пришла уже давно, на раннем этапе продумывания способностей персонажа, потому что крыс тоже можно отнести к животным, которые ассоциируются с ведьмами, наравне с летучими мышами, пауками и змеями.

Делать "голую" анимацию без крыс не имело смысла, потому что она не передавала бы всей сути происходящего, поэтому, в порядке исключения, я сделал FX для этих двух анимаций.

Смерть
Возрождение

Кстати, крысы - это частицы (партиклы, particles), анимированные шейдером. Никакого скелета и ключевых кадров, только шейдер, только хардкор.

Я написал подробную статью о том, как создать подобный шейдер и как с его помощью анимировать простых существ.

Твит со ссылкой на англоязычный туториал завирусился (ну, относительно остальных моих твитов) и его даже ретвитнул официальный аккаунт Unity. Такие дела...

Achievement unlocked
Achievement unlocked

Итого

Работа над анимациями персонажа на данном этапе закончена. Чтобы вы немного лучше понимали масштаб трагедии, вот немного статистики:

  • персонаж имеет в сумме 52 анимации, включая основные анимации, вариации для наклонных поверхностей, additive и override анимации
King, Witch and Dragon. DevLog #6

Animator Controller помимо основного слоя имеет:

  • 3 саб-стейт машины
  • 25 стейтов
  • 11 Blend Trees
  • 24 параметра для контроля переходов между стейтами

Скрипт MainCharacterAnimations.cs содержит 574 строки кода.

В общем, было весело.

Что дальше?

Я, скорее всего, еще вернусь к анимациям, но когда будет больше контекста. Сейчас я планирую переключиться на что-то другое (я и так потратил на эти анимации гораздо больше времени, чем планировал). В ближайших планах у меня:

  • концепт-арт основных локаций и окружения
  • блокинг тестового уровня по принципу "антивании", чтобы его можно было пройти любой комбинацией способностей
  • создание FX'ов для персонажа

Я еще не решил, чем именно займусь, но это будет что-то из этого списка.

Чтобы поддержать разработку игры, добавляйте King, Witch and Dragon в вишлист на Steam. Чтобы принять участие в обсуждении, вступайте в группу ВК, а также подписывайтесь на меня в Twitter и Instagram.

Спасибо за внимание!

83
31 комментарий