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.
animator.SetFloat("JumpingForce", rb.velocity.y);
Ce code assigne la valeur pour le paramètre de transition entre le saut et la chute.
Explication du Code
if (Input.GetKeyDown(KeyCode.Space) && isGrounded && animator.GetBool("isAttacking") == false)
{
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
animator.SetBool("isJumping", true);
}
if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
animator.SetBool("isJumping", false);
}
animator.SetFloat("JumpingForce", rb.velocity.y);
isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);
if (Input.GetKeyDown(KeyCode.Space) && isGrounded && animator.GetBool("isAttacking") == false)
{
// Code to execute when the conditions are met
}
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.
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
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
).
animator.SetBool("isJumping", true);
Cette ligne définit un paramètre booléen "isJumping" dans le composant Animator à true, déclenchant l'animation de saut.
if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
// Code to execute when the conditions are met
}
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.
animator.SetBool("isJumping", false);
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.
isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);
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 !