Contenu du cours
Jeu de Combat dans Unity
Jeu de Combat dans Unity
Interaction du Joueur avec les Objets
Interfaces
Une interface est semblable à un contrat qui définit un ensemble de méthodes et de propriétés qu'une classe doit implémenter. Elle permet de spécifier quelles fonctionnalités une classe doit posséder sans fournir les détails de l'implémentation.
Exemple
Supposons que vous développez un jeu dans Unity et que vous souhaitez créer différents types d'armes comme des épées, des pistolets et des arcs. Vous pourriez créer une interface appelée IWeapon
qui définit les actions de base que toute arme doit pouvoir effectuer, telles que Attack()
et Reload()
.
Désormais, toute classe qui souhaite être considérée comme une arme dans votre jeu doit implémenter cette interface. Par exemple, vous pourriez avoir une classe Sword
ou une classe Gun
.
En utilisant des interfaces, vous pouvez garantir que toutes vos armes disposent des mêmes fonctionnalités de base (Attack()
et Reload()
), tout en permettant à chacune d’avoir sa propre implémentation unique. Cela rend votre code plus modulaire et plus facile à gérer, surtout à mesure que la complexité de votre jeu augmente.
Voici l’interface que nous avons utilisée dans notre jeu pour indiquer que les ennemis sont des objets pouvant être attaqués.
public interface IGetAttacked
{
public void GetAttacked(int damage);
}
TryGetComponent
if (rayCastHit.transform.TryGetComponent(out IGetAttacked getAttacked))
{
getAttacked.GetAttacked(damage);
attackEffect.transform.position = rayCastHit.point;
attackEffect.Play();
isAttacking = false;
}
Points clés
raycastHit
: Résultat d'une détection par rayon. Lorsqu'un rayon est lancé dans Unity, il fournit des informations sur l'objet touché ;.TryGetComponent(out IGetAttacked getAttacked)
: Méthode tentant d'obtenir un composant spécifique à partir du transform duGameObject
. Le mot-cléout
permet d'assigner le composant récupéré à la variablegetAttacked
, si la récupération réussit. Sinon, tout ce qui se trouve sous ceif
est ignoré ;IGetAttacked
: Type d'interface que le code tente de récupérer depuis leGameObject
. Cela indique que leGameObject
doit posséder un composant implémentant l'interfaceIGetAttacked
.
Si le GameObject
touché par le raycast possède un composant qui implémente l'interface IGetAttacked
, la variable getAttacked
contiendra une référence à ce composant après l'exécution de cette ligne. Sinon, getAttacked
recevra la valeur null.
Merci pour vos commentaires !