Menu
CoddyTech

Alles beschädigen

Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 43 von 50.

challenge icon

Aufgabe

Mittel

Jetzt geht der Kampf in beide Richtungen. Behalte alles aus den vorherigen Lektionen bei. Die Gegner sind nicht mehr mit Tags versehen: Der Schlag findet über ein Interface heraus, was er verletzen kann, und die Gegner verletzen den Helden über dasselbe Interface.

  • IDamageable deklariert eine Methode, void TakeDamage(int amount);.
  • Enemy implementiert es. Es erhält health, damage und attackEvery, die im Inspector festgelegt werden (ein Grunt hat 2, 1 und 1; der Dasher 1, 2 und 1). TakeDamage zieht amount von health ab und zerstört den Gegner bei 0 oder weniger. Behalte in Start auch das IDamageable des Helden bei. Rufe in jedem Frame, wenn der Held höchstens 1.2 Einheiten entfernt ist, dessen TakeDamage(damage) auf, höchstens einmal alle attackEvery Sekunden.
  • Hero implementiert es mit swingDamage (1), maxHealth (5) und safeTime (1), die im Inspector festgelegt werden, sowie einem health, das in Awake mit maxHealth beginnt. Ein Treffer zieht amount ab, protokolliert die Gesundheit als Hero HP: 4 und schützt den Helden für safeTime Sekunden vor weiteren Treffern. Bei 0 Gesundheit protokolliere The hero falls und schalte das Hero-Skript aus (enabled = false). Ein gefallener Held ignoriert Treffer.
  • Der Schlag prüft keine Tags mehr und zerstört nichts: Er ruft bei allem in Reichweite und vor dem Helden, das ein IDamageable hat, TakeDamage(swingDamage) auf.

Drücke Play und kämpfe, dann Check.

Probier es selbst

// In einer späteren Lektion wird dies ergänzt: alles, was Schaden erleiden kann.
public interface IDamageable
{
}

Alle Lektionen in Spielarchitektur in Unity