0

Hopefully someone can help me with this issue. I'm trying to couple an IEnumerator with my object pooling script to instantiate enemies in waves. But I can't get them to instantiate without immediately destroying themselves 2 or 3 times and then instantiating one wave of enemies and never spawning again. Can anyone help me see where I'm going wrong here?

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class SpawnMaster : MonoBehaviour {

public int enemyCount = 4;
public float spawnWait=0.5f;
public float startWait=1;
public float waveWait=3;            
public Transform[] spawnPoints; 
private int currentWave = 0;
private int waveCount = 10;

private IEnumerator spawnWaves;
private IEnumerator goHorde;
bool isSpawning = false;



void Update()
{
 if(!isSpawning)
 {
     isSpawning = true;
    StartCoroutine(SpawnWaves(currentWave));
 }
}

IEnumerator SpawnWaves (int currentWave)
 {
  Debug.Log("Spawning " + currentWave + "currentWave");
           for (int i = 0; i < waveCount; i++)
           {
              StartCoroutine(GoHorde());
           }
           currentWave += 1;
      yield return new WaitForSeconds (waveWait);

     //We've spawned, so start another spawn    
     isSpawning = false;
 }

IEnumerator GoHorde()
 {
  GameObject beetle01 = BeetlePool.current.GetPooledObject();
 if(beetle01 == null)
 yield return null;

 // Only pick a new spawn point once per wave
 int spawnPointIndex = Random.Range (0, spawnPoints.Length);

 for (int j = 0; j < enemyCount; j++)
  {
 beetle01.transform.position = spawnPoints[spawnPointIndex].position;
 beetle01.transform.rotation = spawnPoints[spawnPointIndex].rotation;
 beetle01.SetActive(true);   
 yield return new WaitForSeconds (spawnWait);
  }      
 }
}
Millie
  • 1
  • 2

1 Answers1

0

I would change:

if(!isSpawning)

to:

if(isSpawning != true)

Or:

if(isSpawning == false)

Also if you are going to have multiple waves of enemies that are being instantiated and destroyed. You should look into object pooling to save memory.