Contenu du cours
Jeu de Combat dans Unity
Jeu de Combat dans Unity
Envoyer un Projectile
La classe Projectile
est responsable de la gestion du comportement des projectiles que l'ennemi peut lancer sur le joueur. Cette classe gère la configuration de la direction et de la vitesse du projectile, la mise à jour de son mouvement et la gestion des collisions.
Méthode Setup
But : Cette méthode configure l'état initial du projectile.
Paramètres : Prend un paramètre Vector2 direction
pour définir la direction dans laquelle le projectile se déplacera.
Actions : Définit la direction du projectile, obtient le composant Rigidbody2D
attaché au projectile, fait pivoter le projectile pour qu'il fasse face à la direction dans laquelle il se déplacera, et programme la destruction du projectile après 6 secondes pour éviter qu'il n'existe indéfiniment.
Méthode Update
But : Cette méthode met à jour le mouvement du projectile.
Actions : Définit la vélocité du Rigidbody2D
pour déplacer le projectile dans la direction spécifiée à la vitesse spécifiée.
Méthode OnTriggerEnter2D
But : Cette méthode gère les collisions avec d'autres objets.
Paramètres : Prend un paramètre Collider2D collision
pour détecter les collisions.
Actions : Enregistre le nom de l'objet avec lequel le projectile est entré en collision, vérifie si le projectile est entré en collision avec un objet étiqueté "Player", et si l'objet a un composant qui implémente l'interface IGetAttacked
, il appelle la méthode GetAttacked
sur ce composant pour infliger des dégâts. Enfin, il détruit le projectile après qu'il ait touché le joueur.
Pourquoi Nous L'avons Fait Comme Ça
Modulaire et Réutilisable: La classe Projectile
est conçue pour être modulaire et réutilisable pour tout type de projectile que l'ennemi pourrait utiliser. En définissant la direction et la vitesse, divers projectiles avec des comportements différents peuvent être créés.
Gestion Efficace du Mouvement: L'utilisation du composant Rigidbody2D
pour le mouvement garantit que le projectile se comporte selon le système de physique de Unity, offrant un mouvement fluide et réaliste.
Détection de Collision et Gestion des Dégâts: La méthode OnTriggerEnter2D
garantit que le projectile peut détecter les collisions avec le joueur et appliquer les dégâts de manière appropriée, rendant l'interaction entre le projectile et le joueur efficace.
Classe SendProjectileState
La classe SendProjectileState
est un état spécifique qui gère le comportement de l'ennemi lorsqu'il lance un projectile. Cette classe hérite de la classe State
et inclut des méthodes pour démarrer, terminer et initier l'action d'attaque du projectile.
Constructeur
Le constructeur initialise le SendProjectileState
avec un Animator
pour les animations et une action pour envoyer le projectile. Il assigne ces valeurs aux variables membres correspondantes.
Méthode StartState
Cette méthode définit isStateFinished
sur false
et déclenche l'animation du projectile en réglant le paramètre booléen "projectil" dans l'animateur sur true
.
Méthode StartAction
Cette méthode appelle sendProjectileFunc
, qui exécute l'action définie pour envoyer le projectile. Cette méthode est généralement appelée par un événement de l'animateur pour synchroniser le lancement du projectile avec l'animation.
Méthode EndState
Cette méthode arrête l'animation du projectile en définissant le paramètre booléen "projectil" dans l'animateur à false
.
Pourquoi nous l'avons fait comme ça
Modulaire et Réutilisable :
La classe SendProjectileState
est conçue pour être modulaire, permettant une intégration flexible de différents comportements d'envoi de projectiles grâce à l'utilisation de System.Action
.
Intégration de l'Animation : En utilisant les paramètres de l'animateur, l'état garantit que le lancement du projectile est synchronisé avec l'animation correspondante, offrant une expérience fluide et réaliste.
Fonction d'Envoi de Projectile
La méthode SendProjectile
est responsable de la création et du lancement d'un projectile vers le joueur. Cette méthode calcule la direction de l'ennemi vers le joueur, instancie le projectile et le configure pour se déplacer dans la direction calculée.
Définition de la Méthode et Composants
Définition de la Méthode:
void SendProjectile()
: Cette méthode ne retourne pas de valeur et est conçue pour gérer le lancement du projectile.
Composants:
Vector2 direction = (player.position - transform.position).normalized;
Cette ligne calcule la direction de l'ennemi vers le joueur en soustrayant la position de l'ennemi de celle du joueur. La partie .normalized
garantit que le vecteur de direction a une longueur de 1, en faisant un vecteur unitaire qui indique uniquement la direction.
Instantiate(projectile, projectileSendingPosition.position, Quaternion.identity).Setup(direction);
Cette ligne crée une nouvelle instance du projectile à la position spécifiée (projectileSendingPosition.position
) sans rotation (Quaternion.identity
). La méthode Setup
est appelée sur le projectile instancié pour définir sa direction.
Liaison avec l'Animateur Unity
Nous appelons la fonction StartAction
en utilisant des événements d'animateur. Cela nous permet de spécifier le cadre exact dans l'animation de l'ennemi auquel nous voulons que le projectile soit envoyé. Étant donné que l'animation se compose de nombreux cadres, il est important de déterminer le moment précis pour que cette action se produise.
Merci pour vos commentaires !