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).
Desafio
MédioEnvie cada onda, com uma pausa antes de cada uma.
- Em
WaveSpawner, adicione[SerializeField] private float timeBetweenWaves = 8f;. - Percorra
waves: aguardetimeBetweenWaves, registre"Wave " + (i + 1)e, em seguida, gerewaves[i]como antes. - 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