Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Finaliser l'Animation du Joueur | Système d'Animation Unity
Jeu de Combat dans Unity
course content

Contenu du cours

Jeu de Combat dans Unity

Jeu de Combat dans Unity

1. Système d'Animation Unity
2. Comportement du Joueur
3. Comportement de l'Ennemi
4. Améliorer le Jeu
5. Améliorer le Jeu Flappy Bird

book
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.

question mark

Que représente un raycast dans Unity ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 6

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

course content

Contenu du cours

Jeu de Combat dans Unity

Jeu de Combat dans Unity

1. Système d'Animation Unity
2. Comportement du Joueur
3. Comportement de l'Ennemi
4. Améliorer le Jeu
5. Améliorer le Jeu Flappy Bird

book
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.

question mark

Que représente un raycast dans Unity ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 6
some-alt