c# Enemy's spawning over time, problem

I’m trying to get infinite enemy’s to spawn more frequently over time. atm the “numberOfEnemy” (3) will spawn but no more after that. what am i doing wrong or if there is a better way to do this that would be great. :slight_smile:

	public GameObject enemy;

	private float timePassed = 0f;
	private float spawnRate = 0f;
	private int numberOfEnemy = 3;

	private int m = 3;
	private int i = 0;

	// Update is called once per frame
	void Update () {

		timePassed += Time.deltaTime;
		spawnRate += Time.deltaTime;

		/*if (timePassed >= 60f) {			
			
			if (m >= 2) {
				m -= 1;
			}

			numberOfEnemy += 1;
			timePassed = 0f;
		}*/

		if (spawnRate >= m) {
			while (i < numberOfEnemy) {
				Instantiate(enemy);
				i++;
			}
			spawnRate = 0f;
		}
	}

I managed to solve this one. Ill post it for anyone else looking for a similar fix. Although if you have a better method please post below.

	public GameObject enemy;

	private float timePassed = 0f;
	private float spawnRate = 0f;
	private int numberOfEnemy = 2;
	private float m = 4f;

	void Awake () {
		spawnRate = Time.time + m;
	}

	// Update is called once per frame
	void Update () {

		timePassed += Time.deltaTime;

		if (timePassed >= 10f) {			
			if (m >= 1) {
				m -= 0.5f;	
			}
			numberOfEnemy += 1;
			timePassed = 0f;
		}

		if (spawnRate < Time.time) {
			for (int i = 0; i < numberOfEnemy; i++) {
				Instantiate(enemy);
			}
			spawnRate = Time.time + m;
		}
	}
}

If I had to pick a way to do it, I’d do it like this.

using UnityEngine;
using System.Collections;

public class Spawn : MonoBehavior
{
	public GsameObject enemy;
	private float timePassed = 0f, spawnRate = 0f, m = 4f, spawnTimer = 0f;
	private int numberOfEnemy = 2;
	
	void Start()
	{
		StartCoroutine(Speed());
		StartCoroutine(Spawn());
	}
	
	IEnumerable Speed()
	{
		timePassed += Time.deltaTime;
		if(timePassed >= 10.1f) {
			timePassed = 0.0f;
			numberOfEnemy++;
			spawnRate += 1.0f;
		}
	}
	
	IEnumerable Spawn()
	{
		spawnTimer += Time.deltaTime;
		if(spawnTimer > spawnRate) {
			for(int i = 0; i < numberOfEnemy; i++) {
				Instantiate(this.enemy);
			}
			spawnTimer = 0.0f;
		}
	}
}