Contenu du cours
Jeu de Combat dans Unity
Jeu de Combat dans Unity
Terminer l'Animation du Joueur
Animation de Saut
Pour le saut, nous aurons deux animations : Comme le joueur va sauter puis tomber, nous devons créer deux animations pour cela. La transition entre elles sera basée sur la "vitesse y" du joueur ; si y est positif, il saute, et si y est négatif, il tombe. Nous pouvons obtenir la vitesse y à partir du composant Rigidbody2D attaché au joueur.
Ce code assigne la valeur pour le paramètre de transition entre le saut et la chute.
Explication du Code
Cette ligne vérifie si la touche Espace est enfoncée (Input.GetKeyDown(KeyCode.Space)
), si le joueur est au sol (isGrounded
), et si le joueur n'est pas en train d'attaquer (animator.GetBool("isAttacking") == false
). Si toutes les conditions sont remplies, le bloc de code suivant s'exécutera.
Cette ligne ajoute une force vers le haut au composant Rigidbody (rb
) attaché au joueur, simulant un saut. La force appliquée est dans la direction ascendante (Vector2.up
) avec une magnitude définie par jumpForce
, et elle est appliquée de manière impulsive (ForceMode2D.Impulse
).
Cette ligne définit un paramètre booléen "isJumping" dans le composant Animator à true, déclenchant l'animation de saut.
Cette ligne vérifie si le joueur est actuellement en train de sauter (animator.GetBool("isJumping") == true
), si la vitesse verticale du joueur est négative (rb.velocity.y < 0
), et si le joueur est au sol (isGrounded
). Si toutes les conditions sont remplies, le bloc de code suivant s'exécutera.
Cette ligne définit le paramètre booléen "isJumping" dans le composant Animator à false, indiquant que le joueur a terminé de sauter et de tomber et changera son animation en mode veille.
Cette ligne projette un rayon vers le bas à partir de la position des pieds du joueur (playerFeet.position
) pour détecter si le joueur est au sol. Elle renvoie vrai si le rayon intersecte un quelconque colliseur dans la couche de sol dans une distance de 0,1 unité, mettant à jour la variable isGrounded
en conséquence.
Merci pour vos commentaires !