So im trying to update the timer when a condition is met, in my case here is when the camera follows the player, here is the code:
public class SpawnManager : MonoBehaviour
{
public GameObject[] toSpawn;
public GameObject[] spawnEnemies;
public GameObject[] spawnEnv;
public GameObject[] powerUps;
private PlayerController playerCS;
public float envTimer = 5;
// Start is called before the first frame update
void Start()
{
playerCS = GameObject.Find("Player").GetComponent<PlayerController>();
StartCoroutine(EnvStartWaiter());
}
IEnumerator EnvStartWaiter()
{
while (true && !playerCS.gameOver)
{
// Spawn Bridge Columns
Vector3 columnPos = new Vector3(transform.position.x, -3, 30);
Instantiate(spawnEnv[0], columnPos, spawnEnv[0].transform.rotation);
// Spawn Trees
int randomLeftTree = Random.Range(1, 3);
Vector3 treesLeftPos = new Vector3(-4, -3, 40);
int randomRightTree = Random.Range(1, 3);
Vector3 treesRightPos = new Vector3(4, -3, 40);
Instantiate(spawnEnv[randomLeftTree], treesLeftPos, spawnEnv[randomLeftTree].transform.rotation);
Instantiate(spawnEnv[randomRightTree], treesRightPos, spawnEnv[randomRightTree].transform.rotation);
// Spawn Light Columns
Vector3 lightColumnPosleft = new Vector3(-4, -3, 50);
Vector3 lightColumnPosRight = new Vector3(4, -3, 50);
Instantiate(spawnEnv[5], lightColumnPosRight, spawnEnv[5].transform.rotation);
Instantiate(spawnEnv[4], lightColumnPosleft, spawnEnv[4].transform.rotation);
yield return new WaitForSeconds(envTimer);
}
}