Как да интегрираме анимация за скачане с Unity

Днес завърших първата си анимация за скокове в Blender, която исках да интегрирам в Unity. Мислех, че просто ще трябва да направя нещо като „Добре, когато натисна бутона за скачане, задействам анимацията за скачане и това е всичко!“. Дори не е близо!

Направих това и резултатът беше ... не съвсем това, което очаквах.

Почти съм сигурен, че процесът, който описах по-рано, ще работи в някои конкретни случаи, но за съжаление, не в моя.

Трябваше да премина през по-дълъг метод.

Бърз поглед в скок

Редовният скок може да се раздели на три различни фази:

  • Импулс на скок: когато нашият герой поема импулс и скача.
  • Фаза на падане: когато нашият герой се опитва да остане стабилен, докато е във въздуха.
  • Фаза на кацане: когато нашият герой, все още във въздуха, се подготвя да достигне земята.

Как работи в игра?

Когато играчът натисне интервала (което очевидно е бутонът за скачане ), той задейства анимацията за скачане.

След като играчът е във въздуха, започва друга анимация: падащата фаза, която се завърта, докато стигне до земята.

Тогава анимацията за кацане започва, но с подпрограма: ако тази анимация стартира, когато героят просто е достигнал земята, вече е късно! В тази фаза знаем, че ще ударим земята (просто защото можем да я видим). По този начин можем лесно да оценим разстоянието и да се подготвим за удара, докато сте във въздуха.

Нека помислим как да се държим, когато скачаме! Когато видим, че ще ударим земята , ние се подготвяме за „въздействието“. Можем, защото имаме визията на земята и можем бързо да преценим кога трябва да сме подготвени.

Това, което липсва в нашия случай, е нещо, което да оцени дистанцията на нашия герой от земята! Ще ви изложа един метод за оценка на това разстояние от героя до земята, но обърнете внимание, че има много други начини да го направите. Може да се използва в друг двигател за игри.

Номерът е да хвърлим лъч от нашия герой в неговата скорост. Тогава ще можем да задействаме анимацията за кацане в точното време, точно преди да я достигнем! 🥳

Готов?

Изпълнение с Unity

В Unity има инструмент наречен Raycast, който ще ни даде точно това, което искаме.

Продължаваме в две стъпки:

  • Изпращаме Raycast в посока на нашата скорост, за да определим разстоянието, преди да докоснем земята.
  • Ако скоростта ни по вертикалната ос, y в Единство, е отрицателна (което означава, че падаме) и земята е твърде близо, тогава задействаме анимацията за кацане.

Той е усъвършенстван, но сега, когато скочим в играта, скриптът ще задейства нашите анимации в точното време. До безкрайност и отвъд! ️