Menu
CoddyTech

Chaque vague

Leçon 6 sur 25 du cours Jeu Unity : défense de tours de Coddy.

Une seule vague ne suffit pas à faire un jeu. La coroutine parcourt toutes les vagues dans l’ordre, en faisant une pause avant chacune pour que le joueur puisse se préparer, et indique dans la Console quelle vague commence. La pause est un WaitForSeconds supplémentaire, au début de la boucle :

for (int i = 0; i < waves.Count; i++)
{
    yield return new WaitForSeconds(timeBetweenWaves);
    // enregistre la vague dans le journal, puis fais apparaître waves[i] comme avant
}

Les vagues sont comptées à partir de 0 dans la liste et à partir de 1 pour le joueur, donc la Console affiche "Wave " + (i + 1).

challenge icon

Défi

Moyen

Envoyez chaque vague, avec une pause avant chacune.

  1. Dans WaveSpawner, ajoutez [SerializeField] private float timeBetweenWaves = 8f;.
  2. Parcourez waves : attendez timeBetweenWaves, affichez "Wave " + (i + 1) dans le journal, puis faites apparaître waves[i] comme avant.
  3. Après la boucle, affichez All waves sent dans le journal.

Appuyez sur « Jouer » : après 8 secondes, la Console affiche Wave 1 et les Grunts arrivent. Puis appuyez sur « Vérifier ».

Essayez vous-même

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

Toutes les leçons de Jeu Unity : défense de tours

Entraînez-vous par vous-même : Playground Unity