Next enemy wave timer issue

Hi,

I’m creating a tower defence game.

I’m having trying to spawn a second batch of enemies (next wave) after the first batch has spawned (when enemiesSpawned >= enemiesToSpawn) after a certain amount of time has passed. so far the first batch will spawn and the second batch will not.

can anyone please help me figure this problem out?

Thanks,

#pragma strict
var enemyWayPoints:Transform[];
var enemySpawn:Transform;
var enemy:GameObject;
var enemies:Array = new Array();


var waveTime = 1;
private var nextWaveTime = 0.0;

var currentWave:int;
var enemyCount:int;
var enemiesToSpawn:int;
var enemiesSpawned:int;

var spawnRate = 1;
private var nextSpawnTime = 0.0;

function Start () 
{
	enemiesToSpawn = 3;
}

function Update () 
{
	print("next wave time = " + nextWaveTime);
	print("enemies to spawn = " + enemiesToSpawn);
	if(Time.time >= nextWaveTime)
	{
		for(var i:int=enemiesSpawned; i < enemiesToSpawn; i++)
		{
			if(Time.time >= nextSpawnTime)
			{
				SpawnEnemy();
				enemiesSpawned++;
				print("enemies spawned = " + enemiesSpawned); 
				CheckWave();
			}
		}
	}
	
}

function CheckWave()
{
	if(enemiesSpawned >= enemiesToSpawn)
	{
		nextWaveTime = Time.time + waveTime;
		currentWave++;
		enemiesSpawned = 0;
		enemiesToSpawn = 0;
		print("current wave: " + currentWave);
	}
}

function SpawnEnemy()
{
	nextSpawnTime = Time.time + spawnRate;
	var newEnemy = Instantiate(enemy, enemySpawn.position, enemySpawn.rotation);
	enemies.Add(newEnemy);
	print("enemies = " + enemies.length);
}

I think your problem is on line 51:

enemiesToSpawn = 0;

I do’t see any place where you reset it to something other than 0, so in line 30:

for(var i:int=enemiesSpawned; i < enemiesToSpawn; i++)

enemiesToSpawn will never be greater than ‘i’ for the second wave.