Menu
CoddyTech

Каждая волна

Урок 6 из 25 курса Игра на Unity: Tower Defense на Coddy.

Одна волна — это ещё не игра. Корутина проходит все волны по порядку, делая паузу перед каждой, чтобы игрок успел подготовиться, и сообщает в Console, какая волна начинается. Пауза — это ещё один WaitForSeconds в начале цикла:

for (int i = 0; i < waves.Count; i++)
{
    yield return new WaitForSeconds(timeBetweenWaves);
    // запишите волну в журнал, затем создайте waves[i], как и раньше
}

Нумерация волн в списке начинается с 0, а для игрока — с 1, поэтому в Console выводится "Wave " + (i + 1).

challenge icon

Задание

Средне

Отправляй каждую волну, делая паузу перед каждой.

  1. В WaveSpawner добавь [SerializeField] private float timeBetweenWaves = 8f;.
  2. Организуй цикл по waves: жди timeBetweenWaves, выводи в журнал "Wave " + (i + 1), затем создавай waves[i], как и раньше.
  3. После цикла выведи в журнал All waves sent.

Нажми «Играть»: через 8 секунд в Console появится Wave 1, и придут Grunts. Затем нажми «Проверить».

Попробуйте сами

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);
        }
    }
}

Все уроки раздела Игра на Unity: Tower Defense

Потренируйтесь самостоятельно: Песочница Unity