Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Créer un Gestionnaire d'État | Comportement de l'Ennemi
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
Créer un Gestionnaire d'État

État:

Méthodes Abstraites:

public abstract void StartState(); public abstract void EndState(); sont des méthodes abstraites. Une méthode abstraite n'a pas de corps (implémentation) ici et doit être implémentée par toute classe non abstraite qui hérite de cette classe State.

Méthode Virtuelle:

public virtual void UpdateState() {} est une méthode virtuelle. Une méthode virtuelle a une implémentation (dans ce cas, un corps vide {}), mais elle peut être remplacée par des classes dérivées si elles ont besoin d'un comportement différent.

Comment cela fonctionne pour notre ennemi

Héritage d'État :

La classe State sera héritée par d'autres états spécifiques. Par exemple, nous pourrions avoir des classes comme IdleState, AttackState et PatrolState qui héritent de State. Chacun de ces états implémentera ses propres versions de StartState(), UpdateState(), et EndState().

Comportement de l'ennemi :

Le comportement de l'ennemi est géré par des états, avec StartState() initialisant l'état, UpdateState() mettant à jour le comportement pendant l'état, et EndState() nettoyant après la fin de l'état.

Utilisation de la classe abstraite : Faire de State une classe abstraite garantit que tous les états spécifiques implémentent les méthodes nécessaires, organisant le comportement de l'ennemi et simplifiant la gestion des états sans modifier le script de l'ennemi.

Gestionnaire d'États:

Explication

Le constructeur public StateManager(State startingState) initialise le StateManager avec un état de départ. Il définit currentState sur startingState et appelle currentState.StartState() pour l'initialiser.

La méthode ChangeState, public void ChangeState(State newState), change l'état de l'ennemi. Elle appelle currentState.EndState() pour nettoyer l'état actuel, définit currentState sur le nouvel état, puis appelle currentState.StartState() pour initialiser le nouvel état.

La méthode UpdateStates, public void UpdateStates(), met à jour l'état actuel en appelant currentState.UpdateState() pour effectuer les actions associées à cet état.

Comment cela fonctionne pour notre ennemi

Lorsque nous créons un StateManager pour notre ennemi, le constructeur initialise l'état de départ. Lorsque l'ennemi doit changer de comportement, la méthode ChangeState est appelée, mettant fin à l'état actuel avec EndState(), définissant le nouvel état et l'initialisant avec StartState(). Pendant le jeu, la méthode UpdateStates est appelée de manière répétée pour exécuter les actions de l'état actuel via UpdateState().

Exemple de Flux de Travail :

L'ennemi commence dans un IdleState, avec le StateManager créé et IdleState.StartState() appelé pour configurer le comportement d'attente. Lorsque l'ennemi détecte le joueur, ChangeState(new AttackState()) est appelé, mettant fin au comportement d'attente avec IdleState.EndState(). L'état actuel est ensuite défini sur AttackState, et AttackState.StartState() initie le comportement d'attaque. À chaque frame, UpdateStates() est appelé, et si l'état actuel est AttackState, AttackState.UpdateState() gère les actions d'attaque.

En utilisant la classe StateManager, nous pouvons facilement gérer et basculer entre différents comportements de notre ennemi de manière organisée.

État d'Attente

Explication

Le constructeur public IdleState(Animator animator) prend un objet Animator comme paramètre et l'assigne à la variable animator de la classe. La méthode StartState, public override void StartState(), définit le paramètre booléen "idle" dans l'animateur sur true, déclenchant l'animation d'attente. La méthode EndState, public override void EndState(), définit le paramètre "idle" sur false, arrêtant l'animation d'attente.

Comment cela fonctionne pour notre ennemi

Lorsque l'ennemi entre dans le IdleState, la méthode StartState() définit le paramètre "idle" dans l'animateur sur vrai, démarrant l'animation d'inactivité, faisant apparaître l'ennemi comme inactif. Lorsque l'ennemi quitte le IdleState, la méthode EndState() définit le paramètre "idle" sur faux, arrêtant l'animation d'inactivité et préparant l'ennemi à passer à un autre état, comme se déplacer ou attaquer.

Exemple de flux de travail

Le StateManager définit l'état de l'ennemi sur IdleState, appelant IdleState.StartState() pour définir le paramètre "idle" de l'animateur sur vrai, démarrant l'animation d'inactivité. Lors du changement de comportement de l'ennemi, le StateManager appelle IdleState.EndState(), définissant le paramètre "idle" sur faux et arrêtant l'animation d'inactivité. Le StateManager fait ensuite passer l'ennemi à un nouvel état, tel que AttackState ou PatrolState.

En utilisant la classe IdleState, nous pouvons nous assurer que notre ennemi peut entrer et sortir du comportement d'inactivité en douceur, le rendant plus dynamique et réaliste. Cette structure facilite également l'ajout ou la modification du comportement d'inactivité de l'ennemi sans affecter d'autres parties du code de l'ennemi.

Quelle méthode est appelée pour mettre à jour l'état actuel dans la classe `StateManager`?

Quelle méthode est appelée pour mettre à jour l'état actuel dans la classe StateManager?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 3
We're sorry to hear that something went wrong. What happened?
some-alt