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 4 mois.

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

    alec1996
    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 4 mois par  alec1996.
    #735

    alec1996
    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.