Menu
CoddyTech

Uma onda

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

O Grunt e o Runner agora são prefabs, junto com um Tank e um Boss, e um Spawner fica no WP0. Uma onda consiste em alguns números: qual inimigo, quantos e qual o intervalo entre eles. Por isso, Wave é uma classe [System.Serializable], e o spawner mantém uma List<Wave> que o Inspector preenche com as oito ondas do jogo. Sem [System.Serializable], o Unity não consegue preencher a lista, e ela fica vazia.

Gerar inimigos com intervalos é uma coroutine: yield return new WaitForSeconds(...) espera sem parar o jogo. Um prefab não pode apontar para os waypoints da cena, então o spawner entrega a cada novo inimigo os seus próprios logo após Instantiate:

Enemy enemy = Instantiate(wave.enemy, waypoints[0].position, Quaternion.identity);
enemy.waypoints = waypoints;
yield return new WaitForSeconds(wave.spacing);
challenge icon

Desafio

Fácil

Envie a primeira onda de Grunts pelo caminho.

  1. Em Wave.cs, coloque [System.Serializable] em Wave, com public Enemy enemy;, public int count; e public float spacing;.
  2. Em WaveSpawner, adicione [SerializeField] private List<Wave> waves; e [SerializeField] private Transform[] waypoints;.
  3. Em Start, execute uma coroutine que gere waves[0].count inimigos como acima.

Pressione “Jogar”: seis Grunts avançam, com 1.2 segundos de intervalo. Depois, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;

// Vem depois: envia os inimigos pelo caminho em ondas.
public class WaveSpawner : MonoBehaviour
{
}

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

Pratique por conta própria: Playground de Unity