Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }