- Home /
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);
}
Answer by robertbu · Sep 06, 2014 at 02:42 AM
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.
Thanks so much! looking at a problem for such a long period can make you miss the most obvious!
Yepp, that was it, please accept robertbu's answer to close the question, or if you have any more questions, feel free to ask :)