Menu
CoddyTech

Danneggiare tutto

Fa parte della sezione Architettura dei giochi in Unity del percorso Unity di Coddy. Lezione 43 di 50.

challenge icon

Sfida

Medio

Ora lo scontro va in entrambe le direzioni. Mantieni tutto ciò che hai realizzato nelle lezioni precedenti. I nemici non hanno più tag: il colpo individua ciò che può danneggiare tramite un'interfaccia, e i nemici danneggiano l'eroe tramite la stessa interfaccia.

  • IDamageable dichiara un metodo, void TakeDamage(int amount);.
  • Enemy la implementa. Ha health, damage e attackEvery, impostati nell'Inspector (un grunt ha i valori 2, 1 e 1; il dasher 1, 2 e 1). TakeDamage sottrae amount da health e distrugge il nemico quando raggiunge 0 o meno. In Start, conserva anche IDamageable dell'eroe. A ogni frame, quando l'eroe si trova entro 1.2 unità, chiama TakeDamage(damage) su di esso, al massimo una volta ogni attackEvery secondi.
  • Hero la implementa, con swingDamage (1), maxHealth (5) e safeTime (1) impostati nell'Inspector, e un health che parte da maxHealth in Awake. Un colpo sottrae amount, registra la salute come Hero HP: 4 e protegge l'eroe da altri colpi per safeTime secondi. Quando la salute arriva a 0, registra The hero falls e disattiva lo script Hero (enabled = false). Un eroe caduto ignora i colpi.
  • Il colpo non controlla più i tag e non distrugge nulla: chiama TakeDamage(swingDamage) su tutto ciò che è a portata e davanti a sé e che ha un IDamageable.

Premi Play e combatti, poi Check.

Provalo tu

// Una lezione successiva completerà questo punto: qualsiasi cosa che possa subire danni.
public interface IDamageable
{
}

Tutte le lezioni di Architettura dei giochi in Unity