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 !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 3.33
Finaliser l'Animation du Joueur
Glissez pour afficher le menu
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 !