Ogni ondata
Lezione 6 di 25 del corso Gioco Unity: Tower Defense di Coddy.
Un'ondata non basta per un gioco. La coroutine attraversa tutte le ondate in ordine, con una pausa prima di ciascuna per permettere al giocatore di prepararsi, e comunica alla Console quale ondata sta iniziando. La pausa è un altro WaitForSeconds, all'inizio del ciclo:
for (int i = 0; i < waves.Count; i++)
{
yield return new WaitForSeconds(timeBetweenWaves);
// registra l'ondata nel log, poi genera waves[i] come prima
}Le ondate si contano a partire da 0 nell'elenco e da 1 per il giocatore, quindi la Console mostra "Wave " + (i + 1).
Sfida
MedioInvia ogni ondata, con una pausa prima di ciascuna.
- In
WaveSpawner, aggiungi[SerializeField] private float timeBetweenWaves = 8f;. - Scorri
waves: attenditimeBetweenWaves, registra"Wave " + (i + 1), poi generawaves[i]come prima. - Dopo il ciclo, registra
All waves sent.
Premi «Gioca»: dopo 8 secondi, la Console mostra Wave 1 e arrivano i Grunt. Poi premi «Verifica».
Provalo tu
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);
}
}
}
Tutte le lezioni di Gioco Unity: Tower Defense
1Il percorso
Punti di passaggioDati dei nemiciEsercitati da solo: Playground Unity