Menu
CoddyTech

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).

challenge icon

Desafío

Intermedio

Envía todas las oleadas, con una pausa antes de cada una.

  1. En WaveSpawner, añade [SerializeField] private float timeBetweenWaves = 8f;.
  2. Recorre waves: espera timeBetweenWaves, registra "Wave " + (i + 1) y después genera waves[i] como antes.
  3. 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