private bool IsTimeToSpawn(CloudDistance cloudDistance, float deltaTime) { switch (cloudDistance) { case CloudDistance.Front: if (currentFrontSpawnDelay > 0) { currentFrontSpawnDelay -= deltaTime; return(false); } currentFrontSpawnDelay = isFrontClusterTime ? Random.Range(1f, 2f) : Random.Range(3f, 5f); break; case CloudDistance.Mid: if (currentMidSpawnDelay > 0) { currentMidSpawnDelay -= deltaTime; return(false); } currentMidSpawnDelay = isMidClusterTime ? Random.Range(0.5f, 1.5f) : Random.Range(2f, 4f); break; case CloudDistance.Back: if (currentBackSpawnDelay > 0) { currentBackSpawnDelay -= deltaTime; return(false); } currentBackSpawnDelay = isBackClusterTime ? Random.Range(0.2f, 0.4f) : Random.Range(2f, 4f); break; default: throw new ArgumentOutOfRangeException("cloudDistance"); } return(true); }
private void RandomlyPlaceAndActivateNewCloud(GameObject cloud, CloudDistance cloudDistance) { var cloudScroller = cloud.GetComponent <CloudScroller>(); float yPosition; float xScale; float yScale; switch (cloudDistance) { case CloudDistance.Front: yScale = 1f + Random.Range(0f, 0.5f); xScale = yScale + Random.Range(0f, 0.7f); cloud.transform.parent = frontContainer; yPosition = Random.Range(-frontSpawnRange, frontSpawnRange); cloud.transform.GetChild(0).gameObject.layer = 17; break; case CloudDistance.Mid: yScale = 0.6f + Random.Range(0f, 0.25f); xScale = yScale + Random.Range(0f, 0.5f); cloud.transform.parent = midContainer; yPosition = Random.Range(-midSpawnRange, midSpawnRange); cloud.transform.GetChild(0).gameObject.layer = 16; break; case CloudDistance.Back: yScale = 0.3f + Random.Range(0f, 0.1f); xScale = yScale + Random.Range(0f, 0.3f); cloud.transform.parent = backContainer; yPosition = Random.Range(-backSpawnRange + 0.3f, backSpawnRange); cloud.transform.GetChild(0).gameObject.layer = 15; break; default: throw new ArgumentOutOfRangeException("cloudDistance"); } cloud.transform.localScale = new Vector3(xScale, yScale, yScale); cloud.transform.localPosition = new Vector3(0f, yPosition, 0f); cloudScroller.Initialize(this, cloudDistance); cloud.SetActive(true); }