Vagues d’ennemis
Fait partie de la section Architecture de jeu dans Unity du Journey Unity de Coddy. Leçon 44 sur 50.
Défi
MoyenLes 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 classeWavemarquée[System.Serializable], avecpublic Enemy enemy(le prefab),public int countetpublic float spacing.WaveSetest un ScriptableObject avec[CreateAssetMenu], unpublic List<Wave> waveset unpublic float restBetweenWaves. L’assetArenade 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. Enemyreçoitpublic static event Action<Enemy> Died, déclenché avec l’ennemi juste avant sa destruction.WaveSpawnerreçoitwaveSetetspawnPointsdepuis l’Inspector, ainsi quepublic int Wave { get; private set; }, le numéro de la vague en cours. À partir deStart, une coroutine parcourt les vagues de l’asset dans l’ordre. Pour chacune : ajoute 1 àWaveet affiche sa valeur dans le journal, sous la formeWave 1; fais apparaître lescountennemis de la vague àspacingsecondes d’intervalle, l’ennemii(à partir de 0) au pointspawnPoints[i % spawnPoints.Length]; attends qu’il ne reste plus aucun ennemi en vie ; puis marque une pause derestBetweenWavessecondes. Après la dernière vague, l’ensemble recommence à la première, etWavecontinue d’augmenter : 4, 5, et ainsi de suite.- Compte les ennemis en vie grâce à l’événement
Died: abonne-toi dansOnEnableet désabonne-toi dansOnDisable. 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
1Des composants, pas des hiérarchies
Des composants simplesUn script de base pour les ennemisDes composants abstraitsDes composants qui fonctionnent ensembleRécapitulatif : tourelle modulaire4Données sérialisées
Classes sérialisablesListes dans l’inspecteurÉnumérations dans l’inspecteurRécapitulatif : table de butin7Machines à états
Les états sous forme de classesUne machine à étatsTransitionsLes cerveaux des ennemisRécapitulatif : états d’une porte10Projet : Survivant de l’arène
Le hérosTypes d’ennemis2Interfaces dans Unity
IDamageableInterfaces et TryGetComponentGetComponentsRécapitulatif : touche d’interaction5ScriptableObjects
Assets de donnéesStatistiques des armesParamètres partagésLes vagues sous forme de donnéesRécapitulatif : base de données d’objets