Comment intégrer une animation de saut avec Unity

Aujourd'hui, j'ai terminé ma première animation de saut dans Blender, que je voulais intégrer dans Unity. Je pensais que je devrais juste faire quelque chose comme "Ok quand j'appuie sur le bouton de saut, déclenche l'animation de saut et c'est tout!". Pas même près!

Je l'ai fait et le résultat a été… pas tout à fait ce à quoi je m'attendais.

Je suis presque sûr que le processus que j'ai décrit plus tôt fonctionnerait dans certains cas spécifiques mais malheureusement, pas dans le mien.

J'ai dû passer par une méthode plus longue.

Un coup d'œil sur un saut

Un saut régulier peut être divisé en trois phases différentes:

  • L'impulsion du saut: lorsque notre personnage prend l'impulsion et saute.
  • Phase de chute: lorsque notre personnage essaie de rester stable dans les airs.
  • Phase d'atterrissage: lorsque notre personnage, toujours en l'air, se prépare à atteindre le sol.

Comment ça marche dans un jeu?

Lorsque le joueur appuie sur la barre d'espace (qui est évidemment le bouton de saut ), il déclenche l'animation de saut.

Une fois que le joueur est dans les airs, une autre animation commence: la phase de chute qui boucle jusqu'à ce qu'elle atteigne le sol.

Puis l'animation d'atterrissage démarre mais avec une subtilité: si cette animation démarre lorsque le personnage vient d'atteindre le sol, c'est trop tard! Dans cette phase, nous savons que nous allons toucher le sol (simplement parce que nous pouvons le voir). Ainsi, nous pouvons facilement évaluer la distance et nous préparer à l'impact en l'air.

Réfléchissons à comment nous comportons-nous lorsque nous sautons! Quand nous voyons que nous allons toucher le sol , nous nous préparons à «l'impact». Nous le pouvons parce que nous avons la vision du terrain et pouvons rapidement évaluer quand nous devons nous préparer.

Ce qui manque dans notre cas, c'est quelque chose pour évaluer la distance de notre personnage par rapport au sol! Je vais vous exposer une méthode pour évaluer cette distance du personnage au sol, mais notez qu'il existe de nombreuses autres façons de le faire. Il peut être utilisé dans un autre moteur de jeu.

L'astuce consiste à lancer un rayon de notre personnage dans la direction de sa vitesse. Nous pourrons alors déclencher l'animation d'atterrissage au bon moment juste avant de l'atteindre! 🥳

Prêt?

Implémentation avec Unity

Dans Unity, il existe un outil appelé Raycast qui nous donnera exactement ce que nous voulons.

Nous procédons en deux étapes:

  • Nous envoyons un Raycast dans le sens de notre vitesse pour déterminer la distance avant de toucher le sol.
  • Si notre vitesse sur l'axe vertical, y dans Unity, est négative (ce qui signifie que nous tombons) et que le sol est trop proche, alors nous déclenchons l'animation d'atterrissage.

C'est perfectible mais maintenant quand on saute dans le jeu, le script déclenchera nos animations au bon moment. Vers l'infini et au-delà! ️