Fala
Lekcja 5 z 25 w kursie Gra w Unity: Obrona wieży w Coddy.
Grunt i Runner są teraz prefabami, podobnie jak Tank i Boss, a Spawner znajduje się w punkcie WP0. Fala to kilka liczb: który przeciwnik, ilu ich jest i jakie są między nimi odstępy. Dlatego Wave jest klasą [System.Serializable], a spawner przechowuje List<Wave>, którą Inspector wypełnia ośmioma falami w grze. Bez [System.Serializable] Unity nie może wypełnić listy, więc pozostaje ona pusta.
Tworzenie przeciwników w odstępach czasu odbywa się za pomocą korutyny: yield return new WaitForSeconds(...) czeka, nie zatrzymując gry. Prefab nie może odwoływać się do punktów trasy w scenie, więc spawner przekazuje każdemu nowemu przeciwnikowi jego własne punkty zaraz po Instantiate:
Enemy enemy = Instantiate(wave.enemy, waypoints[0].position, Quaternion.identity);
enemy.waypoints = waypoints;
yield return new WaitForSeconds(wave.spacing);Wyzwanie
ŁatwyWyślij pierwszą falę Gruntów ścieżką.
- W
Wave.csumieść[System.Serializable]nadWave, wraz zpublic Enemy enemy;,public int count;ipublic float spacing;. - W
WaveSpawnerdodaj[SerializeField] private List<Wave> waves;i[SerializeField] private Transform[] waypoints;. - Z
Starturuchom korutynę, która tworzywaves[0].countprzeciwników, jak wyżej.
Naciśnij „Graj”: sześć Gruntów wymaszeruje w odstępach 1.2 sekundy. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
// Do dodania później: wysyła wrogów falami wzdłuż ścieżki.
public class WaveSpawner : MonoBehaviour
{
}
Wszystkie lekcje w sekcji Gra w Unity: Obrona wieży
Poćwicz samodzielnie: Edytor online Unity