Come integrare un'animazione saltellante con Unity

Oggi ho finito la mia prima animazione saltando in Blender, che volevo integrare in Unity. Pensavo che avrei dovuto fare qualcosa del tipo "Ok quando premo il pulsante di salto, innesco l'animazione di salto e basta!". Neanche vicino!

L'ho fatto e il risultato è stato ... non proprio quello che mi aspettavo.

Sono abbastanza sicuro che il processo che ho descritto in precedenza avrebbe funzionato in alcuni casi specifici, ma purtroppo non nel mio.

Ho dovuto seguire un metodo più lungo.

Una rapida occhiata in un salto

Un salto regolare può essere suddiviso in tre diverse fasi:

  • L'impulso del salto: quando il nostro personaggio sta prendendo l'impulso e salta.
  • Fase di caduta: quando il nostro personaggio sta cercando di rimanere stabile mentre è in aria.
  • Fase di atterraggio: quando il nostro personaggio, ancora in aria, si prepara a raggiungere il suolo.

Come funziona in un gioco?

Quando il giocatore preme la barra spaziatrice (che è ovviamente il pulsante di salto ), attiva l'animazione di salto.

Una volta che il giocatore è in aria, inizia un'altra animazione: la fase di caduta che scorre fino a raggiungere il suolo.

Quindi l'animazione di atterraggio inizia ma con una sottigliezza: se questa animazione inizia quando il personaggio ha appena raggiunto il suolo, è troppo tardi! In questa fase sappiamo che stiamo per colpire il suolo (semplicemente perché possiamo vederlo). Pertanto, possiamo facilmente valutare la distanza e prepararci all'impatto mentre siamo in volo.

Pensiamo a come ci comportiamo quando saltiamo! Quando vediamo che stiamo per colpire il terreno , ci stiamo preparando all'impatto. Possiamo perché abbiamo la visione del terreno e possiamo valutare rapidamente quando dobbiamo essere preparati.

Ciò che manca nel nostro caso è qualcosa per valutare la distanza del nostro personaggio da terra! Ti esporrò un metodo per valutare questa distanza dal personaggio a terra, ma nota che ci sono molti altri modi per farlo. Può essere utilizzato in altri motori di gioco.

Il trucco è lanciare un raggio dal nostro personaggio nella direzione della sua velocità. Saremo quindi in grado di attivare l'animazione di atterraggio al momento giusto appena prima di raggiungerla! 🥳

Pronto?

Implementazione con Unity

In Unity, c'è uno strumento chiamato Raycast che ci darà esattamente quello che vogliamo.

Procediamo in due passaggi:

  • Inviamo un Raycast nella direzione della nostra velocità per determinare la distanza prima di toccare il suolo.
  • Se la nostra velocità sull'asse verticale, y in Unità, è negativa (il che significa che stiamo cadendo) e il terreno è troppo vicino, allora innesciamo l'animazione di atterraggio.

È perfetto, ma ora quando saltiamo nel gioco, la sceneggiatura attiverà le nostre animazioni al momento giusto. Verso l'infinito e oltre! ️