Accueil Forums J’ai besoin d’aide Unity3D soucie pour un script vague de zombie

Ce sujet a 3 réponses, 3 participants et a été mis à jour par  upln, il y a 2 ans et 6 mois.

4 sujets de 1 à 4 (sur un total de 4)
  • Auteur
    Messages
  • #733

    alec 2026
    Participant

    bonjour 🙂

    alors voila j’ai trouver sur le net un script fait part un anglophone qui permet de crée des vagues de zombies.
    tout marche nickel sauf que je veut rajouter entre chaque vague une pause pour permettre au joueur de respiré un peu.
    donc je fais ma fonction “Pause avec un yieldWaitForSeconds et relance la fonction “UpdateWave” qui rajoute 1 manche avant de relancer la fonction “SpawnEnnemies”.
    le soucie s’est que ma fonction “Pause” tourne en boucle après qu’il est fait sa pause et donc me rajoute une manche par frame qui fait bugger tout le script.
    jaurais besoin de votre aide pour réglé ce soucie.
    merci d’avance pour vos réponse ^^

    le script :
    <pre class=”lang:js decode:true ” >
    #pragma strict

    var spawnPoints : Transform[];
    var ennemyPrefabs : GameObject[];

    var yieldTimeMin = 2;
    var yieldTimeMax = 5 ;

    var yieldTimePause = 60;

    var ennemyCounter= 0;

    var spawnXOffsetMin = 0;
    var spawnXOffsetMax = 0;

    var spawnZOffsetMin = 0;
    var spawnZOffsetMax = 0;

    var defaultSpawnNumber = 5;

    var waveNumber = 1;

    var isSpawning = false;

    var Zombie = ennemyPrefabs;

    function SpawnEnnemies(wave : int){

    var spawnNum = (defaultSpawnNumber + 5 * (wave - 1));

    isSpawning = true;

    for(var i = 0; i < spawnNum;i++){
    yield WaitForSeconds(Random.Range(yieldTimeMin, yieldTimeMax));
    var object : GameObject = ennemyPrefabs[Random.Range(0,ennemyPrefabs.Length)];
    var position : Transform = spawnPoints[Random.Range(0,spawnPoints.Length)];

    Instantiate(object, position.position + Vector3(Random.Range(spawnXOffsetMin, spawnXOffsetMax), 0, Random.Range(spawnZOffsetMin, spawnZOffsetMax)), position.rotation);

    ennemyCounter++;
    }
    isSpawning = false;
    }

    function UpdateWave() {
    waveNumber++;
    SpawnEnnemies(waveNumber);
    }

    function Start () {
    SpawnEnnemies(waveNumber);
    }

    function Update () {

    if(ennemyCounter ==0 && !isSpawning){
    Pause();
    //UpdateWave();
    }
    }

    function Pause (){
    yield WaitForSeconds(yieldTimePause);
    UpdateWave();
    Debug.Log(“pause fini”);

    }

    function KillZombie (){
    ennemyCounter-;
    Debug.Log (“un ennemi en moin”);
    }

    • Ce sujet a été modifié le il y a 2 ans et 6 mois par  alec 2026.
    #735

    alec 2026
    Participant

    en fait c’est bon j’ai remplacer mon yieldForSeconds par un time.deltaTime et mis un if pour lancer la prochaine vague quand le minuteur dépasse le temps que j’ai prédéfinit

    #736

    Stan13160
    Participant

    Bonjour merci pour le partage de ton script 👍

    #745

    upln
    Admin bbPress

    J’avais fait il a qq temps un spawner qui est facilement adaptable :

    Si çà aide !

    Cordialement

4 sujets de 1 à 4 (sur un total de 4)

Vous devez être connecté pour répondre à ce sujet.

Après ce tutoriel consacré à Unity et au développement de jeux vidéo, la page « UPLN » (forums topic soucie pour un script vague de zombie) invite aussi les visiteurs adultes à consulter Casino en Ligne Fiable, un guide vers une autre forme de divertissement numérique à pratiquer de façon responsable.