Setiap Gelombang
Pelajaran 6 dari 25 dalam kursus Game Unity: Tower Defense di Coddy.
Satu gelombang saja belum menjadi permainan. Coroutine menjalani setiap gelombang secara berurutan, dengan jeda sebelum masing-masing gelombang agar pemain bisa bersiap, dan memberi tahu Console gelombang mana yang dimulai. Jeda itu menggunakan satu lagi WaitForSeconds, di bagian awal perulangan:
for (int i = 0; i < waves.Count; i++)
{
yield return new WaitForSeconds(timeBetweenWaves);
// Catat wave, lalu munculkan waves[i] seperti sebelumnya
}Gelombang dihitung mulai dari 0 dalam list dan mulai dari 1 untuk pemain, jadi Console menampilkan "Wave " + (i + 1).
Tantangan
SedangKirim setiap gelombang, dengan jeda sebelum masing-masing gelombang.
- Di
WaveSpawner, tambahkan[SerializeField] private float timeBetweenWaves = 8f;. - Lakukan perulangan pada
waves: tunggutimeBetweenWaves, catat"Wave " + (i + 1), lalu munculkanwaves[i]seperti sebelumnya. - Setelah perulangan, catat
All waves sent.
Tekan tombol “Main”: setelah 8 detik, Console menampilkan Wave 1 dan para Grunt muncul. Lalu tekan tombol “Periksa”.
Coba sendiri
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WaveSpawner : MonoBehaviour
{
[SerializeField] private List<Wave> waves = new List<Wave>();
[SerializeField] private Transform[] waypoints;
void Start()
{
StartCoroutine(RunWaves());
}
IEnumerator RunWaves()
{
Wave wave = waves[0];
for (int n = 0; n < wave.count; n++)
{
Enemy enemy = Instantiate(wave.enemy, waypoints[0].position, Quaternion.identity);
enemy.waypoints = waypoints;
yield return new WaitForSeconds(wave.spacing);
}
}
}
Semua pelajaran di Game Unity: Tower Defense
Latihan sendiri: Playground Unity