#9 Как оживить персонажа в игре?

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

Banner_1Fire

Ёджи — наш первый игровой персонаж. Это маленький зверек, который обладает невероятной силой владения огнем. В игре мы используем анимацию mecanim, и вот как выглядит диаграмма состояний для нашего персонажа:

Anim1

Сейчас я все объясню по порядку. Idle — это основная анимация ничего не делания. Персонаж просто стоит и повторяет одни и те же движения. Как видно на рисунке — эта анимация связана со всеми остальными. Есть два вида связи с другими анимациями:
1) Переход между состоянием Idle и бегом (Run) осуществляется по условию скорости персонажа. Если скорость нулевая, то проигрываем анимацию Idle, в противном случае проигрываем Run. Т.е динамически во время игры, в зависимости от скорости персонажа, анимация будет меняться.

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

Отдельно хочется упомянуть анимацию получения урона. У этой анимации очень важный вес. Не важно что игрок делал в этот момент в игре: стоял, бежал, танцевал, кастовал спел, нам обязательно нужно проиграть анимацию получения урона, если персонаж получает урон. И как видно из графика, эта анимация (Hit) может сработать из любой другой анимации.

Давайте по-подробнее рассмотрим блок с заклинаниями :

anim4

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

Теперь перейдем в закладку NewStates.
anim3

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

Напоследок остались так называемые случайные анимации (Random Animations) :
anim2

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

Перед тем как показать вам видео получившихся анимаций, хочу отметить интересный момент с заклинаниями Фаербол и Огненная Волна. Как я писал ранее, мы хотели, чтобы огонь вырывался из кулаков при ударе. Но проблема в том, что создание заклинаний — это игровая логика, а анимация — это просто визуальный элемент. Т.е. мы не может завязывать создание огненного шара на проигрывание анимации, к тому же на сервере, который считает всю игровую логику анимаций вообще никаких нет. И вот как мы решили этот вопрос. Все наши заклинания были созданы при помощи системы частиц, поэтому мы смогли добавить задержку при их создании. Т.е. как только игрок стреляет огненным шаром, начинает проигрываться анимация и создается невидимый огненный шар. И только в нужный нам момент анимации начинаются появляться частицы, который и создают этот шар. Т.е. по сути первые доли секунд огненный шар как бы есть, но его просто никто не видит.

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

Подписываемся на блог

UnnyWorld
Twitter