Question: How do I create a time interval for pizza spawning? During the game time for every 15s start spawning pizza for 5 seconds and stop, then start spawning pizza again after 15s

```
   IEnumerator SpawnPizzaCoroutine()
    {
        while (true)
        {
            int spawnPointX = Random.Range(-18, -5);
            int spawnPointY = Random.Range(5, 0);
            Vector3 spawnPosition = new Vector3(spawnPointX, spawnPointY, 0);
            Instantiate(Pizza, spawnPosition, Quaternion.identity);
            yield return new WaitForSeconds(3f);
        }
    }
void Start()
    {
        StartCoroutine(SpawnPizzaCoroutine());
    }

```

Answer: 
You just need to keep track of the elapsed time between pizzas in a float type variable

```
private bool spawningPizza;
private float nextSpawnTime;

private void Start()
{
    StartCoroutine(SpawnPizzaCoroutine());
}

private IEnumerator SpawnPizzaCoroutine()
{
    while (true)
    {
        nextSpawnTime += Time.deltaTime;

        if (nextSpawnTime >= 15)
        {
            spawningPizza = true;

            int spawnPointX = Random.Range(-18, -5);
            int spawnPointY = Random.Range(5, 0);
            Vector3 spawnPosition = new Vector3(spawnPointX, spawnPointY, 0);
            Instantiate(Pizza, spawnPosition, Quaternion.identity);

            yield return new WaitForSeconds(5f);

            nextSpawnTime = 0;
            spawningPizza = false;
        }
    }
}

```
You can use the `InvokeRepeating` for that purpose.
Have a look here: <https://docs.unity3d.com/ScriptReference/MonoBehaviour.InvokeRepeating.html>

You could execute the function every 20 seconds then your coroutine for 5 seconds. The result would be, that you spawn pizzas for 5 seconds and after 15 seconds another 5 seconds of pizza spawning would begin.

```
    void Start()
    {
        InvokeRepeating("SpawnPizza", 15f, 20f);
    }   
    void SpawnPizza()
    {            
        StartCoroutine(SpawnPizzaCoroutine());
    }

    IEnumerator SpawnPizzaCoroutine(){
    startTime = Time.time;

    while (Time.time - startTime < 5f)
     {
       int spawnPointX = Random.Range(-18, -5);
       int spawnPointY = Random.Range(5, 0);
       Vector3 spawnPosition = new Vector3(spawnPointX, spawnPointY, 0);
       Instantiate(Pizza, spawnPosition, Quaternion.identity);
       yield return null;
      }
     }

```