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);Défi
FacileEnvoyez la première vague de Grunts sur le chemin.
- Dans
Wave.cs, ajoutez[System.Serializable]àWave, avecpublic Enemy enemy;,public int count;etpublic float spacing;. - Dans
WaveSpawner, ajoutez[SerializeField] private List<Wave> waves;et[SerializeField] private Transform[] waypoints;. - Depuis
Start, lancez une coroutine qui fait apparaîtrewaves[0].countennemis 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
1Le parcours
Points de passageDonnées des ennemisEntraînez-vous par vous-même : Playground Unity