so i have made mob generator just fine and they spawn but they only spawn once i wonder how i can allow them to spawn every 2 seconds then stop spawning after 10minutes wait 10minutes then spawn a new wave, at the moment it set to random range and selects a mob at random thanks for any help
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class MobGenerator : MonoBehaviour {
public enum State {
Idle,
Initialize,
Setup,
SpawnMob
}
public GameObject mobPrefabs; //array to hold all mob prefabs
public GameObject spawnPoints; //array of spawn points
public State state;
void Awake() {
state = MobGenerator.State.Initialize;
}
// Use this for initialization
IEnumerator Start () {
while(true) {
switch(state) {
case State.Initialize:
Initialize();
break;
case State.Setup:
Setup();
break;
case State.SpawnMob:
SpawnMob();
break;
}
yield return 0;
}
}
private void Initialize() {
if(!CheckForMobPrefabs())
return;
if(!CheckForMobSpawn())
return;
state = MobGenerator.State.Setup;
}
private void Setup() {
state = MobGenerator.State.SpawnMob;
}
private void SpawnMob() {
GameObject[] avaliable = AvailableSpawnPoints();
for(int cnt = 0; cnt < avaliable.Length; cnt++) {
GameObject SpawnMob = Instantiate(mobPrefabs[Random.Range(0, mobPrefabs.Length)],
avaliable[cnt].transform.position,
Quaternion.identity
) as GameObject;
SpawnMob.transform.parent = avaliable[cnt].transform;
state = MobGenerator.State.Idle;
}
}
//check for mobs
private bool CheckForMobPrefabs() {
if(mobPrefabs.Length > 0)
return true;
else
return false;
}
private bool CheckForMobSpawn() {
if(spawnPoints.Length > 0)
return true;
else
return false;
}
private GameObject[] AvailableSpawnPoints() {
List<GameObject> avaliable = new List<GameObject>();
for(int cnt = 0; cnt < spawnPoints.Length; cnt++) {
if( spawnPoints[cnt].transform.childCount == 0) {
avaliable.Add(spawnPoints[cnt]);
}
}
return avaliable.ToArray();
}
}