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).
Défi
MoyenEnvoyez chaque vague, avec une pause avant chacune.
- Dans
WaveSpawner, ajoutez[SerializeField] private float timeBetweenWaves = 8f;. - Parcourez
waves: attendeztimeBetweenWaves, affichez"Wave " + (i + 1)dans le journal, puis faites apparaîtrewaves[i]comme avant. - Après la boucle, affichez
All waves sentdans 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
1Le parcours
Points de passageDonnées des ennemisEntraînez-vous par vous-même : Playground Unity