Menu
CoddyTech

Cada onda

Lição 6 de 25 do curso Jogo de Unity: Defesa de Torres da Coddy.

Uma onda não é um jogo. A coroutine percorre todas as ondas em ordem, com uma pausa antes de cada uma para que o jogador possa se preparar, e informa ao Console qual onda começa. A pausa é mais um WaitForSeconds, no início do loop:

for (int i = 0; i < waves.Count; i++)
{
    yield return new WaitForSeconds(timeBetweenWaves);
    // registre a onda no log e depois instancie waves[i] como antes
}

As ondas são contadas a partir de 0 na lista e de 1 para o jogador, então o Console mostra "Wave " + (i + 1).

challenge icon

Desafio

Médio

Envie cada onda, com uma pausa antes de cada uma.

  1. Em WaveSpawner, adicione [SerializeField] private float timeBetweenWaves = 8f;.
  2. Percorra waves: aguarde timeBetweenWaves, registre "Wave " + (i + 1) e, em seguida, gere waves[i] como antes.
  3. Após o loop, registre All waves sent.

Pressione “Jogar”: após 8 segundos, o Console mostra Wave 1 e os Grunts aparecem. Em seguida, clique em “Verificar”.

Experimente você mesmo

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

Todas as lições de Jogo de Unity: Defesa de Torres

Pratique por conta própria: Playground de Unity