Cum să integrezi o animație de sărituri cu Unity

Astăzi am terminat prima mea animație de sărituri în Blender, pe care voiam să o integrez în Unity. M-am gândit că va trebui doar să fac ceva de genul „Ok atunci când apăs butonul de sărituri, să declanșez animația de sărituri și asta este!”. Nici măcar pe aproape!

Am făcut acest lucru, iar rezultatul a fost ... nu chiar ceea ce mă așteptam.

Sunt destul de sigur că procesul pe care l-am descris anterior ar funcționa în anumite cazuri specifice, dar, din păcate, nu în al meu.

A trebuit să trec printr-o metodă mai lungă.

O privire rapidă în salt

Un salt regulat poate fi împărțit în trei faze diferite:

  • Impulsia lui Jump: când personajul nostru ia impulsuri și sare.
  • Faza de cădere: când personajul nostru încearcă să rămână stabil în timp ce este în aer.
  • Faza de aterizare: când personajul nostru, încă în aer, se pregătește să ajungă la pământ.

Cum funcționează într-un joc?

Când jucătorul apasă bara spațială (care este, evident, butonul de săritură ), declanșează animația de sărituri.

Odată ce jucătorul este în aer, începe o altă animație: faza de cădere care se bucle până ajunge la pământ.

Apoi începe animația de aterizare, dar cu o subtilitate: dacă această animație începe când personajul tocmai a ajuns la pământ, este prea târziu! În această fază știm că vom lovi pământul (pur și simplu pentru că îl putem vedea). Astfel, putem evalua cu ușurință distanța și putem fi pregătiți pentru impactul aflat în aer.

Să ne gândim cum ne comportăm când sărim! Când vedem că vom lovi pământul , ne pregătim „impactul”. Putem pentru că avem viziunea asupra solului și putem evalua rapid când trebuie să fim pregătiți.

Ceea ce lipsește în cazul nostru este ceva care să evalueze distanța personajului nostru de la sol! Vă voi expune o metodă pentru a evalua această distanță de la personaj la sol, dar rețineți că există multe alte modalități de a face acest lucru. Poate fi utilizat în alt motor de joc.

Trucul este să aruncăm o rază din personajul nostru în direcția vitezei sale. Vom putea apoi să declanșăm animația de aterizare la momentul potrivit chiar înainte de a ajunge la ea! 🥳

Gata?

Implementare cu Unity

În Unity, există un instrument numit Raycast care ne va oferi exact ceea ce ne dorim.

Procedăm în doi pași:

  • Trimitem un Raycast în direcția vitezei noastre pentru a determina distanța înainte de a atinge solul.
  • Dacă viteza noastră pe axa verticală, y în Unity, este negativă (ceea ce înseamnă că cădem) și pământul este prea aproape, atunci declanșăm animația de aterizare.

Este perfectibil, dar acum, când vom sări în joc, scenariul ne va declanșa animațiile la momentul potrivit. La infinit și dincolo de! ️