Menu
CoddyTech

Un'ondata

Lezione 5 di 25 del corso Gioco Unity: Tower Defense di Coddy.

Ora Grunt e Runner sono prefab, insieme a un Tank e a un Boss, e uno Spawner si trova su WP0. Un'ondata è descritta da pochi numeri: quale nemico, quanti e a quale distanza l'uno dall'altro. Quindi Wave è una classe [System.Serializable] e lo spawner conserva una List<Wave> che l'Inspector riempie con le otto ondate del gioco. Senza [System.Serializable], Unity non può riempire la lista, che rimane vuota.

Generare nemici a intervalli è un coroutine: yield return new WaitForSeconds(...) attende senza fermare il gioco. Un prefab non può fare riferimento ai waypoint presenti nella scena, quindi lo spawner assegna a ogni nuovo nemico i suoi subito dopo Instantiate:

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

Sfida

Facile

Invia la prima ondata di Grunt lungo il percorso.

  1. In Wave.cs, aggiungi [System.Serializable] a Wave, con public Enemy enemy;, public int count; e public float spacing;.
  2. In WaveSpawner, aggiungi [SerializeField] private List<Wave> waves; e [SerializeField] private Transform[] waypoints;.
  3. Da Start, avvia una coroutine che genera waves[0].count nemici come sopra.

Premi «Gioca»: sei Grunt avanzano, a 1.2 secondi di distanza l'uno dall'altro. Poi premi «Verifica».

Provalo tu

using UnityEngine;

// Verrà aggiunto in seguito: invia i nemici lungo il percorso a ondate.
public class WaveSpawner : MonoBehaviour
{
}

Tutte le lezioni di Gioco Unity: Tower Defense

Esercitati da solo: Playground Unity