private IEnumerator Routine() { float timer = 0; while (true) { yield return(new WaitForSeconds(1)); timer += 1; if (Random.value <= trapFreq.Evaluate(Mathf.Clamp01(timer / maxTime))) { int rng = Random.Range(0, 4); GameObject o; switch (rng) { case 0: //turret.Activate(); o = Instantiate(turret.gameObject, hazardParent.transform); o.transform.position = new Vector3(Random.Range(-25f, 25f), o.transform.position.y, Random.Range(-15f, 15f)); if (timer / maxTime > 0.6f) { o.GetComponent <Turret>().HardModeActivate(); } else { o.GetComponent <Hazard>().Activate(); } break; case 1: trap.Activate(); break; case 2: if (Random.value < 0.5f) { o = Instantiate(ramp.gameObject, hazardParent.transform); } else { o = Instantiate(bar.gameObject, hazardParent.transform); } o.transform.position = new Vector3(Random.Range(-25, 25), o.transform.position.y, Random.Range(-15, 15)); o.transform.rotation = Quaternion.Euler(o.transform.rotation.eulerAngles.x, Random.Range(0, 360), o.transform.rotation.eulerAngles.z); o.GetComponent <Hazard>().Activate(); break; case 3: bulldozer.Activate(); break; default: break; } } if (Random.value <= barrierFreq.Evaluate(Mathf.Clamp01(timer / maxTime))) { barrier.Activate(); } } }