Trying to modify brackeys wave spawner to loop infinitely by increasing the amount of enemies spawned (count) and the rate of enemies spawned (rate). The current loop begins at line 76 but I’m not sure what to type to increment the count and rate variables in the Wave class.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WaveSpawner : MonoBehaviour
{
public enum SpawnState{ SPAWNING, WAITING, 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 = 3f;
private float waveCountdown;
private float searchCountdown = 1f;
private SpawnState state = SpawnState.COUNTING;
void Start()
{
waveCountdown = timeBetweenWaves;
}
void Update()
{
if( state == SpawnState.WAITING)
{
if (!EnemyIsAlive())
{
WaveCompleted();
}
else
{
return;
}
}
if(waveCountdown <= 0)
{
if (state != SpawnState.SPAWNING)
{
StartCoroutine( SpawnWave ( waves[nextWave]));
}
}
else
{
waveCountdown -= Time.deltaTime;
}
}
void WaveCompleted()
{
Debug.Log("wave completed");
state = SpawnState.COUNTING;
waveCountdown = timeBetweenWaves;
if (nextWave + 1 > waves.Length - 1)
{
nextWave = 0;
}
nextWave ++;
}
bool EnemyIsAlive()
{
searchCountdown -= Time.deltaTime;
if (searchCountdown <= 0f)
{
searchCountdown = 1f;
if (GameObject.FindGameObjectWithTag("Enemy") == null)
{
return false;
}
}
return true;
}
IEnumerator SpawnWave (Wave _wave)
{
Debug.Log("spawn wave" + _wave.name);
state = SpawnState.SPAWNING;
for (int i = 0; i < _wave.count; i++)
{
SpawnEnemy (_wave.enemy[Random.Range(0, 2)]); // replace the "4" with the number of enemies in your array
yield return new WaitForSeconds (1f/_wave.rate);
}
state = SpawnState.WAITING;
yield break;
}
void SpawnEnemy (Transform _enemy)
{
Debug.Log ("spawn" + _enemy.name);
Transform _sp = spawnPoints[ Random.Range (0, spawnPoints.Length)];
Instantiate(_enemy, _sp.position, _sp.rotation);
}
}