Hogyan integrálhatunk egy ugráló animációt a Unity-val

Ma befejeztem az első ugráló animációmat a Blenderben, amelyet integrálni akartak az egységbe. Arra gondoltam, hogy tennem kell valamit, például: „Rendben, amikor megnyomom a jumping gombot, elindítom a jumping animációt, és ennyi!” Nem is közel!

Megcsináltam, és az eredmény nem olyan volt, mint amire számítottam.

Nagyon biztos vagyok abban, hogy a korábban leírt eljárás bizonyos esetekben működni fog, de sajnos nem az enyémben.

Hosszabb módszerrel kellett mennem.

Egy gyors betekintés egy ugrásba

A rendszeres ugrást három különböző szakaszra lehet osztani:

  • Ugrás impulzusa: amikor karakterünk impulzust vesz és ugrik.
  • Eső szakasz: amikor a karakterünk megpróbál stabil maradni a levegőben.
  • Leszállási szakasz: amikor a karakterünk, még mindig a levegőben, felkészül arra, hogy elérje a talajt.

Hogyan működik ez a játékban?

Amikor a játékos megnyomja a szóköz (amely nyilvánvalóan a jumping gomb ), ez indítja a jumping animációt.

Amint a játékos a levegőben van, újabb animáció indul: az eső fázis, amely addig hurkol, amíg el nem éri a talajt.

Ezután elindul a leszállás animáció, de egy szubtilitással: ha ez az animáció akkor kezdődik, amikor a karakter éppen elérte a talajt, akkor már késő! Ebben a szakaszban tudjuk, hogy a földre fogunk jutni (egyszerűen azért, mert láthatjuk). Így könnyen megbecsülhetjük a távolságot és felkészülhetünk az ütésekre, miközben a levegőben tartózkodunk.

Gondoljunk arra, hogyan viselkedjünk, amikor ugrunk! Amikor látjuk, hogy földre fogunk jutni , felkészülünk a „hatásra”. Azért tudjuk, mert megvan a jövőképünk, és gyorsan fel tudjuk mérni, mikor kell felkészülnünk.

A mi esetünkben hiányzik valami, hogy megbecsüljük karakterünk távolságát a földtől! Felfedtem egy módszert a karakter és a talaj közötti távolság értékelésére, de vegye figyelembe, hogy erre számos más módszer is van. Más játékmotorokban is használható.

A trükk az, hogy egy sugarat vetünk a karakterünkből a sebesség irányába. Ezután a megfelelő időben elindíthatjuk a leszálló animációt, még mielőtt elérjük! 🥳

Kész?

Végrehajtás az Unity segítségével

Az Unity-ban van egy eszköz, a Raycast, amely pontosan azt adja meg, amit akarunk.

Két lépésben folytatjuk:

  • Küldünk egy Raycast-ot sebességünk irányába, hogy meghatározzuk a távolságot, mielőtt megérintenénk a talajt.
  • Ha sebessége a függőleges tengelyen, y az egységben, negatív (ami azt jelenti, hogy zuhanunk) és a talaj túl közel van, akkor elindítjuk a leszállási animációt.

Tökéletesíthető, de most, amikor ugrunk a játékba, a szkript a megfelelő időben indítja el animációinkat. A végtelenbe és tovább! ️