Jak zintegrować animację skoków z Unity

Dzisiaj skończyłem pierwszą animację skoków w Blenderze, którą chciałem zintegrować z Unity. Pomyślałem, że będę musiał zrobić coś w stylu „Ok, kiedy nacisnę przycisk skoku, uruchomię animację skoku i to wszystko!”. Nawet nie blisko!

Zrobiłem to, a wynik był… niezupełnie taki, jak się spodziewałem.

Jestem pewien, że proces, który opisałem wcześniej, zadziałałby w niektórych szczególnych przypadkach, ale niestety nie w moim.

Musiałem przejść przez dłuższą metodę.

Szybkie spojrzenie na skok

Skok zwykły można podzielić na trzy różne fazy:

  • Impuls skoku: gdy nasza postać wykonuje impuls i skacze.
  • Faza opadania: gdy nasza postać próbuje pozostać stabilna w powietrzu.
  • Faza lądowania: gdy nasza postać, wciąż w powietrzu, przygotowuje się, by dosięgnąć ziemi.

Jak to działa w grze?

Gdy gracz naciśnie spację (która jest oczywiście przyciskiem przeskoku ), uruchamia animację skoku.

Gdy gracz jest w powietrzu, rozpoczyna się kolejna animacja: faza opadania, która zapętla się, aż dotrze do ziemi.

Następnie rozpoczyna się animacja lądowania, ale z subtelnością: jeśli ta animacja rozpoczyna się, gdy postać właśnie dotarła na ziemię, jest już za późno! W tej fazie wiemy, że uderzymy w ziemię (po prostu dlatego, że to widzimy). W ten sposób możemy łatwo ocenić odległość i przygotować się na uderzenie w powietrzu.

Zastanówmy się, jak się zachowujemy, kiedy skaczemy! Kiedy widzimy, że uderzymy w ziemię , przygotowujemy się do „uderzenia”. Możemy, ponieważ mamy wizję ziemi i możemy szybko ocenić, kiedy musimy się przygotować.

W naszym przypadku brakuje nam oceny odległości naszej postaci od ziemi! Przedstawię ci jedną metodę oceny odległości od postaci do ziemi, ale zauważ, że istnieje wiele innych sposobów, aby to zrobić. Może być używany w innym silniku gry.

Sztuką jest rzucić promień z naszej postaci w kierunku jego prędkości. Będziemy wtedy w stanie uruchomić animację lądowania we właściwym czasie, zanim do niej dotrzemy! 🥳

Gotowy?

Wdrożenie z Unity

W Unity istnieje narzędzie o nazwie Raycast, które da nam dokładnie to, czego chcemy.

Postępujemy w dwóch krokach:

  • Wysyłamy Raycast w kierunku naszej prędkości, aby określić odległość, zanim dotkniemy ziemi.
  • Jeśli nasza prędkość na osi pionowej, y w Jedności, jest ujemna (co oznacza, że ​​spadamy), a ziemia jest zbyt blisko, wówczas uruchamiamy animację lądowania.

Jest to doskonałe, ale teraz, kiedy wskoczymy do gry, skrypt uruchomi nasze animacje we właściwym czasie. Do nieskończoności i poza nią! ️