Question by
ThatGuyMiniB · Mar 14, 2016 at 11:13 PM ·
c#spawninginfinitewaveendless loop
Infinite wave spawner help
So I followed a tutorial on how to make a wave spawner in C# and it works quite well. In the tutorial he said that you can easily modify it to make it infinite and spawn more enemies but I have yet to figure it out. I have tried to research and attempt this but I have failed so far lol. The original script is below.
public enum SpawnState{ SPAWNING, WAINTING, COUNTING };
[System.Serializable]
public class Wave
{
public string name;
public Transform enemy;
public int count;
public float rate;
}
public Wave[] waves;
private int nextWave = 0;
public Transform[] spawnPoints;
public float timeBetweenWaves = 5f;
public float waveCountdown;
private float searchCoutdown = 1f;
private SpawnState state = SpawnState.COUNTING;
void Start(){
waveCountdown = timeBetweenWaves;
}
void Update(){
if (state == SpawnState.WAINTING) {
if(!EnemyIsAlive()){
WaveCompleted();
}else{
return;
}
}
if (waveCountdown <= 0) {
if (state != SpawnState.SPAWNING) {
StartCoroutine(SpawnWave( waves[nextWave] ));
}
} else {
waveCountdown -= Time.deltaTime;
}
}
void WaveCompleted(){
state = SpawnState.COUNTING;
waveCountdown = timeBetweenWaves;
if (nextWave + 1 > waves.Length - 1) {
nextWave = 0;
} else {
nextWave++;
}
}
bool EnemyIsAlive(){
searchCoutdown -= Time.deltaTime;
if (searchCoutdown <= 0f) {
searchCoutdown = 1f;
if (GameObject.FindGameObjectWithTag ("enemy") == null) {
return false;
}
}
return true;
}
IEnumerator SpawnWave(Wave _wave){
state = SpawnState.SPAWNING;
for (int i = 0; i < _wave.count; i++) {
SpawnEnemy(_wave.enemy);
yield return new WaitForSeconds( 1f/_wave.rate );
}
state = SpawnState.WAINTING;
yield break;
}
void SpawnEnemy(Transform _enemy){
Debug.Log ("Spawning Enemy: " + _enemy.name);
Transform _sp = spawnPoints [Random.Range (0, spawnPoints.Length)];
Instantiate (_enemy, _sp.position, _sp.rotation);
}
Thank you all in advance for taking the time to help :) It is greatly appreciated.
Comment
Your answer
Follow this Question
Related Questions
Enemy kill counter and time limit. 1 Answer
How to rotate an object 2 Answers
How would I implement a random spawn timer into a list based spawn system? 2 Answers
What is the best way to spawn preplaced and preshaped groups of enemies? 0 Answers
How can I instantiate a object on the world coordinates 1 Answer