Exemple #1
0
 // Start is called before the first frame update
 void Start()
 {
     myFeet         = transform.Find("Feet");
     enemyScript    = GetComponent <ennemyScript>();
     anim           = GetComponent <Animator>();
     playerMovement = FindObjectOfType <PlayerMovement>();
 }
    //Selection aleatoire du prochain type d'ennemi a spawner
    void pickType()
    {
        waveNumber += 1;
        Debug.Log("Vague numero : " + waveNumber);
        spawned = 0;
        int r = Random.Range(0, bots.Length);

        toSpawn = bots[r];
        ennemyScript botScript = bots[r].GetComponent <ennemyScript>();

        waveLenght = Mathf.RoundToInt(((float)botScript.waveLenghtModifier + 100) / 100 * (float)gameManager.gm.averageWavesLenght);
        spawnRate  = botScript.spawnRate;
    }
 //Pour les curieux une méthode beaucoup plus propre existe mais l'appliquer ici vous spoilerait les jours a venir.
 // J'utilise donc en attendant une bidouille moins jolie mais fonctionnelle.
 void trySpawn()
 {
     if (Time.time > nextSpawn && spawned < waveLenght)
     {
         GameObject newBot = (GameObject)Instantiate(toSpawn, transform.position, Quaternion.identity);
         newBot.transform.parent = this.gameObject.transform;
         ennemyScript botScript = newBot.GetComponent <ennemyScript>();
         if (botScript.isFlying == true)
         {
             botScript.nextCheckpoint = playerCore;
         }
         else
         {
             botScript.nextCheckpoint = nextCheckpoint;
         }
         botScript.playerCore = playerCore;
         botScript.waveNumber = waveNumber;
         botScript.hp         = Mathf.RoundToInt(((float)gameManager.gm.nextWaveEnnemyHpUp * (waveNumber - 1) + 100) / 100 * (float)botScript.hp);
         botScript.value      = Mathf.RoundToInt(((float)gameManager.gm.nextWaveEnnemyValueUp * (waveNumber - 1) + 100) / 100 * (float)botScript.value);
         nextSpawn            = Time.time + spawnRate;
         spawned += 1;
     }
     if (spawned == waveLenght)
     {
         if (waveNumber == gameManager.gm.totalWavesNumber)
         {
             gameManager.gm.lastWave = true;
             isEmpty = true;
         }
         else
         {
             nextWave = Time.time + gameManager.gm.delayBetweenWaves;
             pickType();
         }
     }
 }