Kuinka integroida hyppyanimaatio Unityyn

Tänään valmisin ensimmäinen hyppyanimaatio Blenderissä, jonka halusin integroida Unityyn. Ajattelin, että minun olisi tehtävä vain jotain, kuten “Ok kun painan hyppysnapin päälle, käynnistää hyppäävän animaation ja siinä kaikki!”. Ei edes lähelle!

Tein tämän ja tulos oli ... ei aivan mitä odotin.

Olen melko varma, että aikaisemmin kuvailemasi prosessi toimisi joissain erityistapauksissa, mutta valitettavasti ei minun.

Minun piti käydä läpi pidemmän menetelmän.

Nopea katsaus hyppyyn

Säännöllinen hyppy voidaan jakaa kolmeen eri vaiheeseen:

  • Hyppyn impulssi: kun hahmosi ottaa impulssin ja hyppää.
  • Laskuvaihe: kun hahmosi yrittää pysyä vakaana ilmassa.
  • Laskemisvaihe: kun hahmosi, joka on vielä ilmassa, valmistautuu pääsemään maahan.

Kuinka se toimii pelissä?

Kun pelaaja painaa välilyöntiä (mikä on tietenkin hyppypainiketta ), se laukaisee hyppyanimaation.

Kun pelaaja on ilmassa, toinen animaatio alkaa: putoamisvaihe, joka kiertää, kunnes se saavuttaa maan.

Sitten laskeutumisanimaatio alkaa, mutta subsiiliteetti: jos tämä animaatio alkaa, kun hahmo saavutti juuri maan, on liian myöhäistä! Tässä vaiheessa tiedämme, että menemme maahan (yksinkertaisesti siksi, että voimme nähdä sen). Siten voimme helposti arvioida etäisyyden ja valmistautua törmäykseen ilmassa.

Ajattelemme kuinka käyttäytymme hyppääessämme! Kun näemme, että aiomme lyödä maahan we, valmistaudumme itsemme ”iskuun”. Voimme, koska meillä on visio maasta ja voimme nopeasti arvioida milloin meidän on varauduttava.

Mikä puuttuu meidän tapauksestasi, on jotain, jotta voidaan arvioida hahmosi etäisyys maasta! Esitän sinulle yhden menetelmän arvioidaksesi tätä etäisyyttä hahmosta maahan, mutta huomaa, että siihen on monia muita tapoja. Sitä voidaan käyttää muissa pelimoottorissa.

Temppu on heittää säteily hahmostamme hänen nopeuden suuntaan. Sitten voimme laukaista laskuanimaation oikeaan aikaan juuri ennen kuin saavutamme sen! 🥳

Valmis?

Toteutus Unityn kanssa

Unityssa on Raycast-niminen työkalu, joka antaa meille juuri sen, mitä haluamme.

Jatkamme kahdessa vaiheessa:

  • Lähetämme nopeuden suuntaan Raycastin etäisyyden määrittämiseksi ennen kuin kosketamme maata.
  • Jos nopeus pystyakselilla, y yksikössä, on negatiivinen (mikä tarkoittaa, että putoamme) ja maa on liian lähellä, käynnistämme laskeutumisanimaation.

Se on parannettavissa, mutta nyt kun hyppäämme peliin, skripti laukaisee animaatiomme oikeaan aikaan. Kohti ääretöntä ja sen yli! ️