Kuidas integreerida hüppavat animatsiooni Unity'ga

Täna lõpetasin Blenderis oma esimese hüpliku animatsiooni, mille tahtsin Unitysse integreerida. Arvasin, et pean lihtsalt tegema midagi sellist nagu “Ok, kui ma vajutan hüppe nuppu, käivitan hüppe animatsiooni ja ongi kõik!”. Isegi mitte lähedal!

Tegin seda ja tulemus oli… mitte päris see, mida ootasin.

Olen üsna kindel, et varem kirjeldatud protsess toimiks mõnel konkreetsel juhul, kuid kahjuks mitte minu oma.

Pidin minema läbi pikema meetodi.

Kiire uurimine hüppesse

Regulaarse hüppe võib jagada kolme erinevasse faasi:

  • Hüppe impulss: kui meie tegelane võtab impulssi ja hüppa.
  • Kukkumisfaas: kui meie tegelane üritab õhus püsida stabiilsena.
  • Maandumisfaas: kui meie tegelane, veel õhus, valmistub end maapinnale jõudmiseks.

Kuidas see mängus töötab?

Kui mängija vajutab tühikuklahvi (mis on ilmselgelt hüppenupp ), käivitab see hüppamise animatsiooni.

Kui mängija on õhus, algab teine ​​animatsioon: kukkumisfaas, mis silmneb, kuni jõuab maapinnale.

Seejärel algab maandumisanimatsioon, kuid subtiilsusega: kui see animatsioon algab siis, kui tegelane just maapinnale jõudis, on juba hilja! Selles etapis teame, et hakkame platsile minema (lihtsalt seetõttu, et näeme seda). Nii saame hõlpsalt kaugust hinnata ja õhus olemise ajaks löökideks valmistuda.

Mõelgem sellele, kuidas me käitume, kui hüppame! Kui näeme, et hakkame maapinnale lööma, we valmistame end ette “löögiks”. Saame seda teha, kuna meil on kohapealne visioon ja saame kiiresti hinnata, millal peame valmistuma.

See, mis meie puhul puudub, on midagi, mis võimaldaks hinnata meie tegelase kaugust maapinnast! Ma kirjeldan teile üht meetodit selle kauguse hindamiseks tegelasest maapinnale, kuid võtke arvesse, et selleks on palju muid võimalusi. Seda saab kasutada teistes mängumootorites.

Trikk on kiirustada meie tegelaskuju kiiruse suunas. Seejärel saame vahetult enne selle jõudmist käivitada maandumisanimatsiooni õigel ajal! 🥳

Kas olete valmis?

Rakendamine Ühtsusega

Ühtsuses on tööriist nimega Raycast, mis annab meile täpselt selle, mida me tahame.

Me jätkame kahes etapis:

  • Enne maapinna puudutamist saadame vahemaa määramiseks oma kiiruse suunas kiirte suunas.
  • Kui meie kiirus vertikaalteljel, y Ühtsuses, on negatiivne (mis tähendab, et me kukub) ja maapind on liiga lähedal, siis käivitame maandumise animatsiooni.

See on täiustatav, kuid nüüd, kui me mängu hüppame, käivitab skript meie animatsioonid õigel ajal. Lõpmatusse ja edasi! ️