Menu
CoddyTech

Une vague

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

Le Grunt et le Runner sont maintenant des prefabs, avec un Tank et un Boss, et un Spawner se trouve sur WP0. Une vague se décrit par quelques nombres : quel ennemi, combien, et à quelle distance les uns des autres. Ainsi, Wave est une classe [System.Serializable], et le spawner conserve une List<Wave> que l’Inspector remplit avec les huit vagues du jeu. Sans [System.Serializable], Unity ne peut pas remplir la liste, qui reste alors vide.

Faire apparaître des ennemis à intervalles réguliers se fait avec une coroutine : yield return new WaitForSeconds(...) attend sans arrêter le jeu. Un prefab ne peut pas référencer les waypoints de la scène, alors le spawner transmet à chaque nouvel ennemi ses propres waypoints juste après Instantiate :

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

Défi

Facile

Envoyez la première vague de Grunts sur le chemin.

  1. Dans Wave.cs, ajoutez [System.Serializable] à Wave, avec public Enemy enemy;, public int count; et public float spacing;.
  2. Dans WaveSpawner, ajoutez [SerializeField] private List<Wave> waves; et [SerializeField] private Transform[] waypoints;.
  3. Depuis Start, lancez une coroutine qui fait apparaître waves[0].count ennemis comme ci-dessus.

Appuyez sur « Jouer » : six Grunts sortent, espacés de 1.2 seconde. Puis cliquez sur « Vérifier ».

Essayez vous-même

using UnityEngine;

// À venir : envoie les ennemis sur le chemin par vagues.
public class WaveSpawner : MonoBehaviour
{
}

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

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