MrTGN / unlimaginmod

Advanced Killing Floor game modification and large-scale flexible modification platform
Other
4 stars 0 forks source link

Доработка анимации монстров #478

Closed MrTGN closed 7 years ago

MrTGN commented 7 years ago

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

MrTGN commented 7 years ago

Коммент из Pawn: "Note that animation channels 2 through 11 are used for animation updating by physics". Что означает, что каналы со 2-го по 11 зарезервированы под воспроизведение анимации, основанной на физике Pawn. Значит для проигрывания анимации, которая не перезаписывалась бы анимацией физики, нужно использовать каналы 0 и 1.

MrTGN commented 7 years ago

В идеале нужно задействовать больше каналов для анимации, что бы она все смешивалась и плавно проигрывалась. На каналах 0 и 1 проигрывается анимация, которая может быть перезаписана анимацией движения. Это удобно в тех случаях, когда нужно проиграть анимацию атаки и получения не критического урона. В тех же случаях, когда нужно проиграть полноценную анимацию, которая ничем не должна быть перезаписана, нужно уже использовать канал с 12 и выше, дабы такая анимация точно проигралась поверх анимации движения. При этом по завершению проигрывания анимации на таком канале нужно будет убирать его AlphaBlend обратно в 0,0, дабы он не перекрывал проигрывание анимации движения в дальнейшем.

Получается, что нужно для нормального плавного проигрывания анимации использовать два канала под анимацией движения (каналы 0 и 1), а так же 12 канал над анимацией движения. На 0 и 1 канале будут проигрываться анимации атаки и получения некритического урона. На 12 же канал будет проигрываться важная анимация, конца которой нужно ждать.

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

MrTGN commented 7 years ago

Так. На данный момент эта доработка не столь необходима. Её нужно хорошо обдумать и просмотреть код анимации в целом. Ибо добавление дополнительного канала для анимации потребует дополнительных проверок на смешивание и т.д. Переношу на следующий Milestone.

MrTGN commented 7 years ago

Закрываю. Слишком много заморочек пока в реализации. А результат не будет столь заметен. Оно того не стоит.