Contenu du cours
Jeu de Combat dans Unity
Jeu de Combat dans Unity
Finaliser l'Animation du Joueur
Animation de saut
Pour le saut, nous aurons deux animations : comme le joueur va sauter puis retomber, 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 pressé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 sera exécuté.
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
Cette ligne ajoute une force vers le haut au composant Rigidbody (rb
) attaché au joueur, simulant ainsi un saut. La force appliquée est dirigée vers le haut (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 le paramètre booléen "isJumping" dans le composant Animator sur true, déclenchant ainsi 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 vélocité 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 sera exécuté.
animator.SetBool("isJumping", false);
Cette ligne définit le paramètre booléen "isJumping" dans le composant Animator sur false, indiquant que le joueur a terminé de sauter et de tomber, et que son animation passera à l'état d'attente.
isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);
Cette ligne lance 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 retourne true si le rayon intersecte un collider dans la couche du sol dans une distance de 0,1 unité, mettant à jour la variable isGrounded
en conséquence.
Merci pour vos commentaires !