Menu
CoddyTech

Tout endommager

Fait partie de la section Architecture de jeu dans Unity du Journey Unity de Coddy. Leçon 43 sur 50.

challenge icon

Défi

Moyen

À présent, le combat va dans les deux sens. Garde tout ce qui vient des leçons précédentes. Les ennemis ne sont plus identifiés par des tags : le coup trouve ce qu'il peut blesser via une interface, et les ennemis blessent le héros via la même interface.

  • IDamageable déclare une méthode, void TakeDamage(int amount);.
  • Enemy l'implémente. Il a les valeurs health, damage et attackEvery, définies dans l'Inspector (un grunt a 2, 1 et 1 ; le dasher, 1, 2 et 1). TakeDamage soustrait amount à health et détruit l'ennemi lorsque cette valeur atteint 0 ou moins. Dans Start, conserve également l'IDamageable du héros. À chaque image, lorsque le héros se trouve à moins de 1.2 unités, appelle son TakeDamage(damage), au maximum une fois toutes les attackEvery secondes.
  • Hero l'implémente, avec swingDamage (1), maxHealth (5) et safeTime (1) définis dans l'Inspector, et une valeur health initialisée à maxHealth dans Awake. Un coup soustrait amount, enregistre la santé dans le journal sous la forme Hero HP: 4, et protège le héros des coups suivants pendant safeTime secondes. À 0 point de santé, enregistre The hero falls et désactive le script Hero (enabled = false). Un héros tombé ignore les coups.
  • Le coup ne vérifie plus les tags et ne détruit rien : il appelle TakeDamage(swingDamage) sur tout ce qui est à portée et devant le héros et possède un IDamageable.

Appuie sur Play et combats, puis sur Check.

Essayez vous-même

// Une leçon ultérieure complétera ceci : tout ce qui peut subir des dégâts.
public interface IDamageable
{
}

Toutes les leçons de Architecture de jeu dans Unity