Contenu du cours
Jeu de Combat dans Unity
Jeu de Combat dans Unity
É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.
Merci pour vos commentaires !