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.
Aufgabe
MittelSende jede Welle mit einer Pause davor.
- Füge in
WaveSpawner[SerializeField] private float timeBetweenWaves = 8f;hinzu. - Durchlaufe
waves: WartetimeBetweenWaves, gib"Wave " + (i + 1)aus und spawne dann wie zuvorwaves[i]. - Gib nach der Schleife
All waves sentaus.
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