Satu Gelombang
Pelajaran 5 dari 25 dalam kursus Game Unity: Tower Defense di Coddy.
Grunt dan Runner sekarang berupa prefab, bersama Tank dan Boss, sementara Spawner berada di WP0. Sebuah gelombang terdiri dari beberapa angka: musuh yang mana, berapa banyak, dan seberapa jauh jarak antar mereka. Jadi, Wave adalah class [System.Serializable], dan spawner menyimpan List<Wave> yang diisi Inspector dengan delapan gelombang dalam game. Tanpa [System.Serializable], Unity tidak dapat mengisi list tersebut, sehingga list tetap kosong.
Memunculkan musuh dengan jeda menggunakan coroutine: yield return new WaitForSeconds(...) menunggu tanpa menghentikan game. Prefab tidak dapat menunjuk waypoint di scene, jadi spawner memberikan waypoint kepada setiap musuh baru tepat setelah Instantiate:
Enemy enemy = Instantiate(wave.enemy, waypoints[0].position, Quaternion.identity);
enemy.waypoints = waypoints;
yield return new WaitForSeconds(wave.spacing);Tantangan
MudahKirim gelombang pertama Grunt menyusuri jalur.
- Di
Wave.cs, pasang[System.Serializable]padaWave, denganpublic Enemy enemy;,public int count;danpublic float spacing;. - Di
WaveSpawner, tambahkan[SerializeField] private List<Wave> waves;dan[SerializeField] private Transform[] waypoints;. - Dari
Start, jalankan coroutine yang memunculkanwaves[0].countmusuh seperti di atas.
Tekan tombol “Main”: enam Grunt bergerak keluar dengan jeda 1.2 detik. Lalu tekan tombol “Periksa”.
Coba sendiri
using UnityEngine;
// Akan dibuat nanti: mengirim musuh menyusuri jalur secara bergelombang.
public class WaveSpawner : MonoBehaviour
{
}
Semua pelajaran di Game Unity: Tower Defense
Latihan sendiri: Playground Unity