Kaip integruoti šokinėjančią animaciją su „Unity“

Šiandien baigiau savo pirmąją šokinėjančią animacinę medžiagą „Blender“, kurią norėjau integruoti į „Vienybę“. Aš maniau, kad turėsiu ką nors padaryti, pavyzdžiui, „Gerai, kai paspaudžiu šokinėjimo mygtuką, suaktyvinu šokinėjančią animaciją ir viskas!“. Net nepanašu!

Aš tai padariau ir rezultatas buvo ... ne visai toks, kokio tikėjausi.

Esu tikra, kad anksčiau aprašytas procesas veiks kai kuriais konkrečiais atvejais, bet, deja, ne mano.

Turėjau pereiti ilgesnį metodą.

Greitas žvilgsnis į šuolį

Įprastą šuolį galima padalyti į tris skirtingas fazes:

  • Šuolio impulsas: kai mūsų veikėjas imasi impulsų ir šokinėja.
  • Kritimo fazė: kai mūsų veikėjas bando išlikti stabilus būdamas ore.
  • Nusileidimo fazė: kai mūsų personažas, dar būdamas ore, ruošiasi pasiekti žemę.

Kaip tai veikia žaidime?

Kai grotuvas paspaudžia tarpo klavišą (tai akivaizdžiai yra šokinėjimo mygtukas ), jis suaktyvina šokinėjančią animaciją.

Kai žaidėjas yra ore, prasideda dar viena animacija: krintanti fazė, kuri kilpa, kol ji pasiekia žemę.

Tada prasideda nusileidimo animacija, tačiau su subtilumu: jei ši animacija prasideda, kai veikėjas ką tik pasiekė žemę, jau per vėlu! Šiame etape mes žinome, kad pasieksime žemę (paprasčiausiai todėl, kad galime tai pamatyti). Taigi mes galime lengvai įvertinti atstumą ir pasiruošti smūgiams būdami ore.

Pagalvokime, kaip mes elgiamės šokinėdami! Kai pamatome, kad atsitrenksime į žemę , ruošiamės „smūgiui“. Mes galime, nes turime pagrindinę viziją ir galime greitai įvertinti, kada turime būti pasirengę.

Ko trūksta mūsų atveju, yra tai, kas įvertintų mūsų personažo atstumą nuo žemės paviršiaus! Aš jums parodysiu vieną metodą, kaip įvertinti šį atstumą nuo veikėjo iki žemės, tačiau atkreipkite dėmesį, kad yra daugybė kitų būdų tai padaryti. Jis gali būti naudojamas kituose žaidimų varikliuose.

Triukas yra nukreipti spindulį iš mūsų personažo jo greičio kryptimi. Tada mes galėsime suaktyvinti tūpimo animaciją tinkamu metu prieš pat ją pasiekdami! 🥳

Pasirengęs?

Įgyvendinimas su Vienybe

„Vienybėje“ yra įrankis, vadinamas „Raycast“, kuris suteiks mums būtent tai, ko norime.

Mes atliekame du veiksmus:

  • Mes siunčiame „Raycast“ savo greičio kryptimi, kad nustatytume atstumą prieš mums liečiant žemę.
  • Jei mūsų greitis vertikalioje ašyje, y vienybėje, yra neigiamas (tai reiškia, kad krentame), o žemė yra per arti, tada mes suaktyviname tūpimo animaciją.

Tai tobula, tačiau dabar, kai mes peršokime į žaidimą, scenarijus suaktyvins mūsų animacijas tinkamu metu. Iki begalybės ir už jos ribų! ️