Menu
CoddyTech

Power-ups

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

challenge icon

Aufgabe

Mittel

Power-ups. Behalte alles aus den vorherigen Lektionen bei. Ein Herz und ein Schild liegen in der Arena, und die Prefabs Heart und Shield sind bereit, von den Wellen fallen gelassen zu werden. Alles, was der Held aufheben kann, implementiert eine Schnittstelle, sodass der Held die verschiedenen Arten nie kennen muss.

  • IPickup deklariert eine Methode, void Collect(Hero hero);.
  • Heart implementiert sie mit amount (2) aus dem Inspector: Es heilt den Helden um amount und zerstört sich selbst.
  • Shield implementiert sie mit duration (5) aus dem Inspector: Es schützt den Helden duration Sekunden lang vor jedem Treffer und zerstört sich selbst.
  • Hero erhält public void Heal(int amount), das die Gesundheit erhöht, aber nie über maxHealth hinaus, und die Gesundheit wie bei einem Treffer protokolliert; ein gefallener Held wird nicht geheilt. Außerdem erhält er public void Protect(float seconds), das ihn bis seconds Sekunden ab jetzt vor Treffern schützt, so wie es die safeTime eines Treffers tut. Dazu kommt OnTriggerEnter: Wenn das Objekt, das er berührt hat, ein IPickup besitzt, ruft er darauf Collect(this) auf. Ein CharacterController erhält Trigger-Nachrichten auch ohne Rigidbody.
  • Jede Wave erhält ein public GameObject reward. Der Inspector kann kein Feld eines Schnittstellentyps anzeigen, daher enthält das Feld das Prefab als GameObject. Wenn eine Welle besiegt ist, lässt der Spawner vor der Pause die Belohnung der Welle, sofern vorhanden, an seiner eigenen Position in der Mitte der Arena fallen. Das Asset weist Welle 1 ein Heart und Welle 2 ein Shield zu.

Drücke Play, schließe eine Welle ab und sammle ihre Belohnung ein. Klicke dann auf Check.

Probier es selbst

// In einer späteren Lektion wird dies ergänzt: alles, was der Held aufheben kann.
public interface IPickup
{
}

Alle Lektionen in Spielarchitektur in Unity