IEnumerator SpawnBehaviour() { while (!canSpawn) { Vector3 direction = new Vector3(); Quaternion rotation = new Quaternion(); if (spawnPoint.x < 0f) { direction = Vector3.right; rotation = Quaternion.Euler(0f, 0f, 0f); } else { direction = Vector3.left; rotation = Quaternion.Euler(0f, 180f, 0f); } ObstacleController oc = Instantiate(spawnable, spawnPoint, rotation, container).GetComponent <ObstacleController>(); oc.SetDirection(direction); oc.SetSpeed(speed); oc.SetDestroyOffset(spawnOffset); float cooldown = 1 / speed * xScale * Random.Range(minDist, maxDist); yield return(new WaitForSeconds(cooldown)); } }