Cada oleada
Lección 6 de 25 del curso Juego de Unity: Defensa de torres de Coddy.
Una sola oleada no es un juego. La corrutina recorre todas las oleadas en orden, con una pausa antes de cada una para que el jugador pueda prepararse, y le indica a la Consola qué oleada empieza. La pausa es otro WaitForSeconds, al principio del bucle:
for (int i = 0; i < waves.Count; i++)
{
yield return new WaitForSeconds(timeBetweenWaves);
// registra la oleada y luego genera waves[i] como antes
}Las oleadas se cuentan desde 0 en la lista y desde 1 para el jugador, así que la Consola muestra "Wave " + (i + 1).
Desafío
IntermedioEnvía todas las oleadas, con una pausa antes de cada una.
- En
WaveSpawner, añade[SerializeField] private float timeBetweenWaves = 8f;. - Recorre
waves: esperatimeBetweenWaves, registra"Wave " + (i + 1)y después generawaves[i]como antes. - Después del bucle, registra
All waves sent.
Pulsa «Jugar»: después de 8 segundos, la consola muestra Wave 1 y aparecen los Grunts. Después, pulsa «Comprobar».
Pruébalo tú mismo
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);
}
}
}
Todas las lecciones de Juego de Unity: Defensa de torres
Practica por tu cuenta: Playground de Unity