Menu
CoddyTech

Jede Welle

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

Eine Welle ist noch kein Spiel. Die Coroutine durchläuft alle Wellen der Reihe nach, mit einer Pause vor jeder, damit sich der Spieler bereit machen kann, und teilt der Console mit, welche Welle beginnt. Die Pause ist ein weiteres WaitForSeconds am Anfang der Schleife:

for (int i = 0; i < waves.Count; i++)
{
    yield return new WaitForSeconds(timeBetweenWaves);
    // Protokolliere die Welle und erzeuge dann waves[i] wie zuvor
}

Die Wellen werden in der Liste ab 0 gezählt und für den Spieler ab 1, daher zeigt die Console "Wave " + (i + 1) an.

challenge icon

Aufgabe

Mittel

Sende jede Welle mit einer Pause davor.

  1. Füge in WaveSpawner [SerializeField] private float timeBetweenWaves = 8f; hinzu.
  2. Durchlaufe waves: Warte timeBetweenWaves, gib "Wave " + (i + 1) aus und spawne dann wie zuvor waves[i].
  3. Gib nach der Schleife All waves sent aus.

Drücke „Spielen“: Nach 8 Sekunden zeigt die Console Wave 1 an und die Grunts kommen. Drücke dann „Prüfen“.

Probier es selbst

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WaveSpawner : MonoBehaviour
{
    [SerializeField] private List<Wave> waves = new List<Wave>();
    [SerializeField] private Transform[] waypoints;

    void Start()
    {
        StartCoroutine(RunWaves());
    }

    IEnumerator RunWaves()
    {
        Wave wave = waves[0];
        for (int n = 0; n < wave.count; n++)
        {
            Enemy enemy = Instantiate(wave.enemy, waypoints[0].position, Quaternion.identity);
            enemy.waypoints = waypoints;
            yield return new WaitForSeconds(wave.spacing);
        }
    }
}

Alle Lektionen in Unity-Spiel: Tower Defense

Übe selbstständig: Unity-Playground