Menu
CoddyTech

Una oleada

Lección 5 de 25 del curso Juego de Unity: Defensa de torres de Coddy.

El Grunt y el Runner ahora son prefabs, junto con un Tank y un Boss, y hay un Spawner en WP0. Una oleada se define con unos pocos datos: qué enemigo, cuántos y a qué distancia entre sí. Así que Wave es una clase [System.Serializable], y el spawner mantiene una List<Wave> que el Inspector rellena con las ocho oleadas del juego. Sin [System.Serializable], Unity no puede rellenar la lista y esta se queda vacía.

La generación de enemigos con intervalos es una corrutina: yield return new WaitForSeconds(...) espera sin detener el juego. Un prefab no puede apuntar a los puntos de referencia de la escena, así que el spawner le asigna a cada enemigo nuevo sus propios puntos justo después de Instantiate:

Enemy enemy = Instantiate(wave.enemy, waypoints[0].position, Quaternion.identity);
enemy.waypoints = waypoints;
yield return new WaitForSeconds(wave.spacing);
challenge icon

Desafío

Fácil

Envía la primera oleada de Grunts por el camino.

  1. En Wave.cs, coloca [System.Serializable] en Wave, con public Enemy enemy;, public int count; y public float spacing;.
  2. En WaveSpawner, añade [SerializeField] private List<Wave> waves; y [SerializeField] private Transform[] waypoints;.
  3. Desde Start, ejecuta una corrutina que genere waves[0].count enemigos como antes.

Pulsa «Jugar»: seis Grunts salen marchando, con 1.2 segundos de diferencia. Después, pulsa «Comprobar».

Pruébalo tú mismo

using UnityEngine;

// Se implementará más adelante: envía a los enemigos por el camino en oleadas.
public class WaveSpawner : MonoBehaviour
{
}

Todas las lecciones de Juego de Unity: Defensa de torres

Practica por tu cuenta: Playground de Unity