Alles beschädigen
Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 43 von 50.
Aufgabe
MittelJetzt 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.
IDamageabledeklariert eine Methode,void TakeDamage(int amount);.Enemyimplementiert es. Es erhälthealth,damageundattackEvery, die im Inspector festgelegt werden (ein Grunt hat 2, 1 und 1; der Dasher 1, 2 und 1).TakeDamageziehtamountvonhealthab und zerstört den Gegner bei 0 oder weniger. Behalte inStartauch dasIDamageabledes Helden bei. Rufe in jedem Frame, wenn der Held höchstens 1.2 Einheiten entfernt ist, dessenTakeDamage(damage)auf, höchstens einmal alleattackEverySekunden.Heroimplementiert es mitswingDamage(1),maxHealth(5) undsafeTime(1), die im Inspector festgelegt werden, sowie einemhealth, das inAwakemitmaxHealthbeginnt. Ein Treffer ziehtamountab, protokolliert die Gesundheit alsHero HP: 4und schützt den Helden fürsafeTimeSekunden vor weiteren Treffern. Bei 0 Gesundheit protokolliereThe hero fallsund 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
IDamageablehat,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
1Komponenten statt Hierarchien
Kleine KomponentenEin Basisskript für GegnerAbstrakte KomponentenKomponenten im ZusammenspielRückblick: Modularer Geschützturm4Serialisierte Daten
Serialisierbare KlassenListen im InspectorEnums im InspectorRückblick: Loot-Tabelle7Zustandsautomaten
Zustände als KlassenEin ZustandsautomatÜbergängeGegner-KIWiederholung: Türzustände10Projekt: Arena-Überlebenskampf
Der HeldGegnertypen2Interfaces in Unity
IDamageableInterfaces und TryGetComponentGetComponentsRückblick: Interaktionstaste5ScriptableObjects
Daten-AssetsWaffenwerteGemeinsame EinstellungenWellen als DatenRückblick: Item-Datenbank8Wiederverwendbarer Code
ErweiterungsmethodenEin generisches SingletonGenerische HilfsmethodenRückblick: FindNearest