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);Sfida
FacileInvia la prima ondata di Grunt lungo il percorso.
- In
Wave.cs, aggiungi[System.Serializable]aWave, conpublic Enemy enemy;,public int count;epublic float spacing;. - In
WaveSpawner, aggiungi[SerializeField] private List<Wave> waves;e[SerializeField] private Transform[] waypoints;. - Da
Start, avvia una coroutine che generawaves[0].countnemici 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
1Il percorso
Punti di passaggioDati dei nemiciEsercitati da solo: Playground Unity