Hi guys, I kinda need help with my wave system. In my wave system it uses a piece of code that after it spawns like 5 enemies it will stop and start a timer. When the timer reaches a certain time it will start a new wave. However, I don’t want billions of enemies swarming the player nonstop. Can you guys please help me with this?
#pragma strict
var spawnPoints : Transform[];
var enemyPrefabs : GameObject[];
var yieldTimeMin = 2;
var yieldTimeMax = 5;
public var EnemyMovement : EnemyMovement; //the script to access the enemies movement.
var respawnTimer : float;
var respawnTime : float = 3;
var respawnTimerReset : int = 0;
static var enemyCounter = 0;
private var barLength = 0.0;
var spawnXOffsetMin = 0;
var spawnXOffsetMax = 0;
var spawnZOffsetMin = 0;
var spawnZOffsetMax = 0;
var defaultSpawnNumber = 5;
var waveNumber = 1;
var isSpawning = false;
public var EnemyDamageReceiver : EnemyDamageReceiver;
public var EnemyAttack : EnemyAttack;
public var EnemyShoot : EnemyShoot;
function SpawnEnemies(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 = enemyPrefabs[Random.Range(0, enemyPrefabs.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);
enemyCounter++;
}
isSpawning = false;
}
function UpdateWave()
{
waveNumber++;
SpawnEnemies(waveNumber);
defaultSpawnNumber++;
}
function Start ()
{
SpawnEnemies(waveNumber);
barLength = Screen.width / 8;
}
function Update ()
{
if(!isSpawning)
{
respawnTimer += Time.deltaTime;
if(respawnTimer >= respawnTime)
{
EnemyDamageReceiver.hitPoints += 20;
EnemyMovement.desiredSpeed += 0.5;
EnemyAttack.damage += 1;
EnemyShoot.damage += 1;
respawnTimer = respawnTimerReset;
UpdateWave();
}
}
}
function OnGUI()
{
GUI.Box(new Rect(5, 55, 50, 23), "Wave");
GUI.Box(new Rect(55, 55, barLength, 23), waveNumber.ToString("0"));
}