Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Ajouter des Particules | Améliorer le Jeu
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
Ajouter des Particules

Explication des modifications dans la méthode Update

private void Update()
{
    stateManager.UpdateStates(Time.deltaTime);
    scale.x = transform.position.x > player.position.x ? -1 : 1;
    transform.localScale = scale;
}

La méthode Update dans le script de l’ennemi inclut désormais une logique pour mettre à jour le gestionnaire d’états, garantir que l’ennemi fait face au joueur, et gérer un cas spécifique où l’ennemi est dans un DeathState. Cette logique a été ajoutée pour empêcher l’ennemi de continuer à faire face au joueur après sa mort.

Composants de la méthode

Mise à jour du StateManager

stateManager.UpdateStates(Time.deltaTime)

Cette ligne met à jour le gestionnaire d’états, en passant le temps écoulé depuis la dernière image (Time.deltaTime). Elle garantit que l’état actuel est mis à jour correctement à chaque image.

Vérification du DeathState

if (stateManager.GetCurrentState() is DeathState) return;

Cette ligne vérifie si l’état actuel est DeathState. Si l’ennemi est dans le DeathState, la méthode retourne immédiatement, empêchant toute mise à jour supplémentaire concernant l’orientation vers le joueur ou d’autres comportements.

Orientation vers le joueur

Les lignes suivantes garantissent que l’ennemi fait toujours face au joueur :

scale.x = transform.position.x > player.position.x ? -1 : 1;
transform.localScale = scale;

scale.x = transform.position.x > player.position.x ? -1 : 1;

Cette ligne vérifie si la position x de l’ennemi est supérieure à celle du joueur :

  • Si c’est vrai, scale.x est défini à -1, orientant l’ennemi vers la gauche ;
  • Si c’est faux, scale.x est défini à 1, orientant l’ennemi vers la droite.

transform.localScale = scale;

Cette ligne applique l’échelle mise à jour au transform de l’ennemi, garantissant qu’il fait face à la bonne direction.

Pourquoi avons-nous procédé ainsi

Gestion de l'état de mort

L'ajout de la vérification pour DeathState garantit que l'ennemi n'actualise plus son comportement ou son orientation après sa mort. Cela est essentiel pour maintenir la logique du jeu et éviter des comportements inattendus une fois que l'ennemi est censé être inactif.

Logique centralisée

En déplaçant la logique d'orientation vers le joueur dans la méthode Update, ce comportement est centralisé, ce qui réduit la redondance et améliore la maintenabilité du code. Cela garantit que l'ennemi fait toujours face au joueur, quel que soit l'état actuel, ce qui simplifie le code spécifique à chaque état.

Explication de la gestion de la mort de l'ennemi

public class DeathState : State
{
    Animator animator;

    public DeathState(Animator animator)
    {
        this.animator = animator;
    }

    public override void StartState()
    {
        isStateFinished = false;
        animator.SetBool("death", true);
    }

    public override void EndState()
    {
    }
}

La classe DeathState est un état spécifique qui gère le comportement de l'ennemi lorsqu'il meurt.

Pourquoi avons-nous procédé ainsi

Gestion du comportement de mort

La classe DeathState gère spécifiquement le comportement de l’ennemi lors de sa mort, en veillant à ce que l’animation de mort soit jouée et que l’état soit marqué comme terminé.

Intégration de l’animation

L’utilisation des paramètres de l’Animator garantit que l’animation de mort est correctement synchronisée avec le changement d’état, offrant ainsi une expérience fluide et réaliste.

Apparition de particules à la mort de l’ennemi

if (health <= 0)
{
    stateManager.ChangeState(deathState);
    var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity);
    deathParticle.Play();
    Destroy(deathParticle.gameObject, 5);
}

Ce code montre comment l’ennemi gère sa mort lorsque sa santé atteint zéro. Il passe à l’état DeathState et lance un effet de particules de mort.

Décomposition du code

Vérification de la santé

if (health <= 0)

Cette condition vérifie si la santé de l’ennemi est tombée à zéro ou en dessous.

Transition vers DeathState

stateManager.ChangeState(deathState)

Cette ligne fait passer l’ennemi à l’état DeathState en utilisant le StateManager.

Instanciation des particules de mort

var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity)

Cette ligne crée une instance de l’effet de particules de mort à la position de l’ennemi. deathParticles est un prefab qui contient le système de particules pour l’effet de mort. Quaternion.identity garantit que les particules n’ont aucune rotation.

Lecture des particules de mort

deathParticle.Play()

Cette ligne lance l’effet de particules instancié.

Destruction des particules de mort

Destroy(deathParticle.gameObject, 5)

Cette ligne programme la destruction du GameObject de l’effet de particules après 5 secondes, garantissant qu’il ne persiste pas indéfiniment dans le jeu.

Raisons de cette approche

Gestion des états : La transition vers DeathState garantit que le comportement de mort de l’ennemi est correctement géré et que toute logique spécifique à cet état est exécutée.

Effets visuels : L’affichage d’un effet de particules de mort fournit un retour visuel au joueur, améliorant ainsi l’expérience de jeu.

question mark

Que se passe-t-il avec le système de particules lorsque la santé est inférieure ou égale à zéro ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 1

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
Ajouter des Particules

Explication des modifications dans la méthode Update

private void Update()
{
    stateManager.UpdateStates(Time.deltaTime);
    scale.x = transform.position.x > player.position.x ? -1 : 1;
    transform.localScale = scale;
}

La méthode Update dans le script de l’ennemi inclut désormais une logique pour mettre à jour le gestionnaire d’états, garantir que l’ennemi fait face au joueur, et gérer un cas spécifique où l’ennemi est dans un DeathState. Cette logique a été ajoutée pour empêcher l’ennemi de continuer à faire face au joueur après sa mort.

Composants de la méthode

Mise à jour du StateManager

stateManager.UpdateStates(Time.deltaTime)

Cette ligne met à jour le gestionnaire d’états, en passant le temps écoulé depuis la dernière image (Time.deltaTime). Elle garantit que l’état actuel est mis à jour correctement à chaque image.

Vérification du DeathState

if (stateManager.GetCurrentState() is DeathState) return;

Cette ligne vérifie si l’état actuel est DeathState. Si l’ennemi est dans le DeathState, la méthode retourne immédiatement, empêchant toute mise à jour supplémentaire concernant l’orientation vers le joueur ou d’autres comportements.

Orientation vers le joueur

Les lignes suivantes garantissent que l’ennemi fait toujours face au joueur :

scale.x = transform.position.x > player.position.x ? -1 : 1;
transform.localScale = scale;

scale.x = transform.position.x > player.position.x ? -1 : 1;

Cette ligne vérifie si la position x de l’ennemi est supérieure à celle du joueur :

  • Si c’est vrai, scale.x est défini à -1, orientant l’ennemi vers la gauche ;
  • Si c’est faux, scale.x est défini à 1, orientant l’ennemi vers la droite.

transform.localScale = scale;

Cette ligne applique l’échelle mise à jour au transform de l’ennemi, garantissant qu’il fait face à la bonne direction.

Pourquoi avons-nous procédé ainsi

Gestion de l'état de mort

L'ajout de la vérification pour DeathState garantit que l'ennemi n'actualise plus son comportement ou son orientation après sa mort. Cela est essentiel pour maintenir la logique du jeu et éviter des comportements inattendus une fois que l'ennemi est censé être inactif.

Logique centralisée

En déplaçant la logique d'orientation vers le joueur dans la méthode Update, ce comportement est centralisé, ce qui réduit la redondance et améliore la maintenabilité du code. Cela garantit que l'ennemi fait toujours face au joueur, quel que soit l'état actuel, ce qui simplifie le code spécifique à chaque état.

Explication de la gestion de la mort de l'ennemi

public class DeathState : State
{
    Animator animator;

    public DeathState(Animator animator)
    {
        this.animator = animator;
    }

    public override void StartState()
    {
        isStateFinished = false;
        animator.SetBool("death", true);
    }

    public override void EndState()
    {
    }
}

La classe DeathState est un état spécifique qui gère le comportement de l'ennemi lorsqu'il meurt.

Pourquoi avons-nous procédé ainsi

Gestion du comportement de mort

La classe DeathState gère spécifiquement le comportement de l’ennemi lors de sa mort, en veillant à ce que l’animation de mort soit jouée et que l’état soit marqué comme terminé.

Intégration de l’animation

L’utilisation des paramètres de l’Animator garantit que l’animation de mort est correctement synchronisée avec le changement d’état, offrant ainsi une expérience fluide et réaliste.

Apparition de particules à la mort de l’ennemi

if (health <= 0)
{
    stateManager.ChangeState(deathState);
    var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity);
    deathParticle.Play();
    Destroy(deathParticle.gameObject, 5);
}

Ce code montre comment l’ennemi gère sa mort lorsque sa santé atteint zéro. Il passe à l’état DeathState et lance un effet de particules de mort.

Décomposition du code

Vérification de la santé

if (health <= 0)

Cette condition vérifie si la santé de l’ennemi est tombée à zéro ou en dessous.

Transition vers DeathState

stateManager.ChangeState(deathState)

Cette ligne fait passer l’ennemi à l’état DeathState en utilisant le StateManager.

Instanciation des particules de mort

var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity)

Cette ligne crée une instance de l’effet de particules de mort à la position de l’ennemi. deathParticles est un prefab qui contient le système de particules pour l’effet de mort. Quaternion.identity garantit que les particules n’ont aucune rotation.

Lecture des particules de mort

deathParticle.Play()

Cette ligne lance l’effet de particules instancié.

Destruction des particules de mort

Destroy(deathParticle.gameObject, 5)

Cette ligne programme la destruction du GameObject de l’effet de particules après 5 secondes, garantissant qu’il ne persiste pas indéfiniment dans le jeu.

Raisons de cette approche

Gestion des états : La transition vers DeathState garantit que le comportement de mort de l’ennemi est correctement géré et que toute logique spécifique à cet état est exécutée.

Effets visuels : L’affichage d’un effet de particules de mort fournit un retour visuel au joueur, améliorant ainsi l’expérience de jeu.

question mark

Que se passe-t-il avec le système de particules lorsque la santé est inférieure ou égale à zéro ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 1
some-alt