How do I add different enemies/mini waves inside a larger wave.
I'm very new to scripting and I'm stuck on something that's probably very basic. I have a script from a brackeys video (specifically this one). I completed the script but I want to be able to add more types of enemies as well as sub waves in a main wave. Also I want to know how to increase the difficulty and make it infinite. I'm on a 2D template btw if that changes anything. I know I'm asking for a lot of help here, and I tried mix and matching code from videos that have what I want, but its not working out. I would really appreciate if someone could teach me what I need to do as well. I would love to learn this so I can have "some" confidence within myself. Thank you in advance!
Here is the script:
 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 timeBtwWaves = 5f;
     public float waveCountdown;
 
     private float searchCountdown = 1f;
 
     private SpawnState state = SpawnState.COUNTING;
 
     // Start is called before the first frame update
     void Start()
     {
 
         if (spawnPoints.Length == 0)
         {
             Debug.LogError("No spawn points referenced");
         }
 
         waveCountdown = timeBtwWaves;
 
     }
 
     // Update is called once per frame
     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 = timeBtwWaves;
 
         if (nextWave + 1 > waves.Length - 1)
         {
             nextWave = 0;
             Debug.Log("All Waves Completed");
         }
         else
         {
             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("Spawning Wave" + _wave.name);
         state = SpawnState.SPAWNING;
 
         for(int i = 0; i < _wave.count; i++)
         {
             SpawnEnemy(_wave.enemy);
             yield return new WaitForSeconds(1f/_wave.rate);
 
         }
 
         state = SpawnState.WAITING;
 
         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);
     }
 }
 
 
              Your answer
 
             Follow this Question
Related Questions
Survival Shooter Spawn Enemies in Waves? 0 Answers
wave spawner difficulty increase 1 Answer