Menu
CoddyTech

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).

challenge icon

Tantangan

Sedang

Kirim setiap gelombang, dengan jeda sebelum masing-masing gelombang.

  1. Di WaveSpawner, tambahkan [SerializeField] private float timeBetweenWaves = 8f;.
  2. Lakukan perulangan pada waves: tunggu timeBetweenWaves, catat "Wave " + (i + 1), lalu munculkan waves[i] seperti sebelumnya.
  3. 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