Hoe een springanimatie te integreren met Unity

Vandaag heb ik mijn eerste springanimatie in Blender afgerond, die ik in Unity wilde integreren. Ik dacht dat ik gewoon iets zou moeten doen als "Ok als ik op de springknop druk, de springanimatie activeer en dat is alles!". Niet eens in de buurt!

Ik deed dit en het resultaat was ... niet helemaal wat ik had verwacht.

Ik ben er vrij zeker van dat het proces dat ik eerder beschreef in sommige specifieke gevallen zou werken, maar helaas niet in het mijne.

Ik moest een langere methode volgen.

Een snelle blik op een sprong

Een gewone sprong kan in drie verschillende fasen worden opgesplitst:

  • Sprongimpulsie: wanneer ons karakter impulsie opneemt en springt.
  • Vallende fase: wanneer ons personage probeert stabiel te blijven terwijl hij in de lucht is.
  • Landingsfase: wanneer ons karakter, nog steeds in de lucht, zich voorbereidt om de grond te bereiken.

Hoe werkt het in een game?

Wanneer de speler op de spatiebalk drukt (wat uiteraard de springknop is), wordt de springanimatie geactiveerd.

Zodra de speler in de lucht is, begint een andere animatie: de vallende fase die doorloopt tot hij de grond bereikt.

Dan begint de landingsanimatie maar met een subtiel karakter: als deze animatie begint wanneer het personage net de grond heeft bereikt, is het te laat! In deze fase weten we dat we de grond zullen raken (simpelweg omdat we het kunnen zien). Zo kunnen we gemakkelijk de afstand evalueren en voorbereid zijn op de impact terwijl we in de lucht zijn.

Laten we eens nadenken over hoe we ons gedragen als we springen! Als we zien dat we de grond raken , bereiden we ons voor op de “impact”. Dat kunnen we omdat we de visie van de grond hebben en snel kunnen evalueren wanneer we voorbereid moeten zijn.

Wat in ons geval ontbreekt, is iets om de afstand van ons personage tot de grond te evalueren! Ik zal je een methode blootleggen om deze afstand van het personage tot de grond te evalueren, maar merk op dat er veel andere manieren zijn om dit te doen. Het kan worden gebruikt in andere game-engines.

De truc is om een ​​straal van ons personage in de richting van zijn snelheid te werpen. We kunnen dan de landingsanimatie op het juiste moment starten net voordat we het bereiken! 🥳

Klaar?

Implementatie met Unity

In Unity is er een tool genaamd Raycast die ons precies geeft wat we willen.

We gaan in twee stappen:

  • We sturen een Raycast in de richting van onze snelheid om de afstand te bepalen voordat we de grond raken.
  • Als onze snelheid op de verticale as, y in eenheid, negatief is (wat betekent dat we vallen) en de grond te dichtbij is, activeren we de landingsanimatie.

Het is perfect, maar als we nu in het spel springen, zal het script onze animaties op het juiste moment activeren. Tot de oneindigheid en verder! ️