Menu
CoddyTech

Vagues d’ennemis

Fait partie de la section Architecture de jeu dans Unity du Journey Unity de Coddy. Leçon 44 sur 50.

challenge icon

Défi

Moyen

Les ennemis arrivent maintenant par vagues, et les vagues sont définies par des données. Conserve tout ce qui vient des leçons précédentes. L’arène ne contient plus d’ennemis placés directement dans la scène : les prefabs Grunt et Dasher portent tes scripts, quatre points d’apparition se trouvent dans les coins, et l’objet Spawner au centre possède le script WaveSpawner.

  • Dans WaveSet.cs, ajoute une classe Wave marquée [System.Serializable], avec public Enemy enemy (le prefab), public int count et public float spacing. WaveSet est un ScriptableObject avec [CreateAssetMenu], un public List<Wave> waves et un public float restBetweenWaves. L’asset Arena de la scène contient trois vagues (3 grunts espacés de 0.5 s, 2 dashers espacés de 1 s, 5 grunts espacés de 0.4 s) et une pause de 2 secondes.
  • Enemy reçoit public static event Action<Enemy> Died, déclenché avec l’ennemi juste avant sa destruction.
  • WaveSpawner reçoit waveSet et spawnPoints depuis l’Inspector, ainsi que public int Wave { get; private set; }, le numéro de la vague en cours. À partir de Start, une coroutine parcourt les vagues de l’asset dans l’ordre. Pour chacune : ajoute 1 à Wave et affiche sa valeur dans le journal, sous la forme Wave 1 ; fais apparaître les count ennemis de la vague à spacing secondes d’intervalle, l’ennemi i (à partir de 0) au point spawnPoints[i % spawnPoints.Length] ; attends qu’il ne reste plus aucun ennemi en vie ; puis marque une pause de restBetweenWaves secondes. Après la dernière vague, l’ensemble recommence à la première, et Wave continue d’augmenter : 4, 5, et ainsi de suite.
  • Compte les ennemis en vie grâce à l’événement Died : abonne-toi dans OnEnable et désabonne-toi dans OnDisable. Le spawner se contente de lire l’asset : dans l’Editor, une modification apportée à un asset pendant que le jeu tourne reste enregistrée dans l’asset après le mode Play.

Appuie sur Play et survis à quelques vagues, puis clique sur Check.

Essayez vous-même

using UnityEngine;

public class WaveSpawner : MonoBehaviour
{
    // Une leçon ultérieure complétera ceci : envoie les vagues dans l’arène.
}

Toutes les leçons de Architecture de jeu dans Unity