Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre État de Rage | 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
État de Rage

Explication de la classe RageState

La classe RageState est un état spécifique qui gère le comportement de l'ennemi lorsqu'il entre en mode rage. Cette classe hérite de la classe State et inclut des méthodes pour démarrer, mettre à jour et terminer l'état de rage. Elle inclut également des actions pour ajouter de la santé et changer les dégâts d'attaque lorsque l'ennemi est en mode rage.

Définition de la Classe et Variables Membres

Définition de la Classe;

public class RageState : State Cette classe hérite de la classe State, ce qui signifie qu'elle doit implémenter les méthodes abstraites définies dans State.

Variables Membres:

Animator animator; Contrôle les animations.
System.Action addHealth; Une action pour ajouter de la santé à l'ennemi.
System.Action changingAttackDmg; Une action pour changer les dégâts d'attaque de l'ennemi.

Constructeur

Le constructeur initialise le RageState avec les composants nécessaires : un Animator pour les animations et deux actions pour ajouter de la santé et changer les dégâts d'attaque. Il assigne ces valeurs aux variables membres correspondantes.

Méthode StartState

Cette méthode définit isStateFinished sur false, déclenche l'animation de rage en définissant le paramètre booléen "rage" dans l'animateur sur true, et appelle changingAttackDmg pour augmenter les dégâts de l'ennemi.

Méthode UpdateState

Cette méthode est appelée à chaque frame et appelle addHealth pour ajouter continuellement de la santé à l'ennemi pendant l'état de rage.

Méthode EndState

Cette méthode arrête l'animation de rage en réglant le paramètre booléen "rage" dans l'animateur à false.

Pourquoi nous l'avons fait ainsi

Comportement amélioré de l'ennemi;

Le RageState améliore le comportement de l'ennemi en augmentant ses dégâts d'attaque et en ajoutant continuellement de la santé, le rendant plus difficile pour le joueur; L'utilisation d'actions (System.Action) permet des modifications flexibles et modulaires des attributs de l'ennemi.

Gameplay dynamique et engageant :

En faisant entrer l'ennemi dans un état de rage, le gameplay devient plus dynamique et engageant, car le joueur doit s'adapter à un ennemi plus puissant et résilient.

Comment cela fonctionne dans le contexte

Entrer en état de rage : Lorsque l'ennemi entre dans le RageState, la méthode StartState est appelée, déclenchant l'animation de rage et augmentant les dégâts d'attaque de l'ennemi.

Pendant la rage : La méthode UpdateState est appelée à chaque frame. Elle ajoute continuellement de la santé à l'ennemi, rendant plus difficile pour le joueur de vaincre l'ennemi.

Sortir de l'état de rage : Lorsque l'ennemi quitte le RageState, la méthode EndState est appelée, arrêtant l'animation de rage.

En structurant le RageState de cette manière, nous nous assurons que l'ennemi peut devenir significativement plus puissant et résistant, offrant un plus grand défi pour le joueur et améliorant l'expérience de jeu globale.

Initialiser l'état de rage

Explication

Initialisation de RageState :

rage = new RageState(animator, (...) => {...}, (...) => {...}); Crée une nouvelle instance de RageState nommée rage;

Animateur :

animator : Passe l'animateur pour contrôler les animations;

Augmenter la santé :

() => { health += 10f * Time.deltaTime; } Une fonction lambda qui augmente la santé de 10 unités par seconde;

Changer les dégâts d'attaque :

() => { attack1.ChangeAttackDmg(15); attack2.ChangeAttackDmg(25); } Une fonction lambda qui change les dégâts d'attaque de attack1 à 15 et de attack2 à 25.

Transition de Rage

Le rageTransition est une transition qui déplace l'ennemi dans un RageState lorsque certaines conditions sont remplies. Cette transition est conçue pour rendre l'ennemi plus redoutable lorsque sa santé tombe en dessous d'un certain seuil et qu'il n'est pas encore entré dans l'état de rage.

Définition de la Transition

Condition :

La transition vérifie si la santé de l'ennemi est inférieure ou égale à 40 et si l'ennemi n'est pas déjà entré dans l'état de rage (haveRaged est false). Si les deux conditions sont remplies, elle définit haveRaged à true pour s'assurer que l'ennemi n'entre dans l'état de rage qu'une seule fois et retourne true pour déclencher la transition.

Pourcentage d'État :

La transition utilise new StatePourcentage(rage, 100f) pour indiquer que lorsque la condition est remplie, l'ennemi passera à l'état de RageState avec une probabilité de 100%.

Pourquoi nous l'avons fait comme ça

Déclenchement d'un comportement puissant : Le rageTransition permet à l'ennemi de devenir plus puissant lorsque sa santé est critique, augmentant ainsi le défi pour le joueur. Cette transition garantit que l'ennemi n'entre dans l'état de rage qu'une seule fois, empêchant les transitions répétées dans cet état.

Gameplay dynamique et stimulant : En introduisant l'état de rage dans des conditions de santé critique, le gameplay devient plus dynamique et stimulant, nécessitant que le joueur adapte sa stratégie.

Comment cela fonctionne dans le contexte

Vérification de la santé : Pendant le jeu, à mesure que l'ennemi subit des dégâts, sa santé est surveillée. Lorsque la santé de l'ennemi tombe à 40 ou moins et qu'il n'a pas encore ragi, la condition rageTransition est remplie.

Déclenchement de l'état de rage : Une fois la condition remplie, haveRaged est défini sur true, et la transition vers le RageState est déclenchée avec une probabilité de 100%.

Entrée dans l'état de rage : Le RageState est initié, augmentant les dégâts d'attaque de l'ennemi et ajoutant continuellement de la santé, rendant l'ennemi beaucoup plus difficile à vaincre.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

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