Menu
CoddyTech

Eine Welle

Lektion 5 von 25 im Kurs Unity-Spiel: Tower Defense von Coddy.

Der Grunt und der Runner sind jetzt Prefabs, dazu kommen ein Tank und ein Boss, und ein Spawner steht auf WP0. Eine Welle besteht aus einigen Zahlen: welcher Gegner, wie viele und in welchem Abstand. Daher ist Wave eine Klasse mit [System.Serializable], und der Spawner enthält eine List<Wave>, die der Inspector mit den acht Wellen des Spiels füllt. Ohne [System.Serializable] kann Unity die Liste nicht füllen, und sie bleibt leer.

Das Erzeugen von Gegnern mit Abständen erfolgt über eine Coroutine: yield return new WaitForSeconds(...) wartet, ohne das Spiel anzuhalten. Ein Prefab kann nicht auf die Wegpunkte in der Szene verweisen, deshalb weist der Spawner jedem neuen Gegner direkt nach Instantiate seine eigenen zu:

Enemy enemy = Instantiate(wave.enemy, waypoints[0].position, Quaternion.identity);
enemy.waypoints = waypoints;
yield return new WaitForSeconds(wave.spacing);
challenge icon

Aufgabe

Einfach

Schicke die erste Welle Grunts den Weg entlang.

  1. Setze in Wave.cs [System.Serializable] auf Wave, mit public Enemy enemy;, public int count; und public float spacing;.
  2. Füge in WaveSpawner [SerializeField] private List<Wave> waves; und [SerializeField] private Transform[] waypoints; hinzu.
  3. Starte von Start aus eine Coroutine, die wie oben waves[0].count Gegner spawnt.

Drücke „Spielen“: Sechs Grunts marschieren los, im Abstand von 1,2 Sekunden. Drücke dann „Prüfen“.

Probier es selbst

using UnityEngine;

// Kommt später: Schickt die Gegner in Wellen den Pfad entlang.
public class WaveSpawner : MonoBehaviour
{
}

Alle Lektionen in Unity-Spiel: Tower Defense

Übe selbstständig: Unity-Playground