Ejemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        if (transform.position.x < generationPoint.position.x)
        {
            distanceBetweenPlatforms = Random.Range(distanceBetweenPlatformsMin, distanceBetweenPlatformsMax);

            platformSelector = Random.Range(0, objectPools.Length);

            heightChange = transform.position.y + Random.Range(maxHeightChange, -maxHeightChange);

            if (heightChange > maxPlatformHeight)
            {
                heightChange = maxPlatformHeight;
            }
            else if (heightChange < minPlatformHeight)
            {
                heightChange = minPlatformHeight;
            }

            transform.position = new Vector3(transform.position.x + (platformWidths[platformSelector] / 2) + distanceBetweenPlatforms, heightChange, transform.position.z);

            if (transform.position.y > midPlatformHeightPoint.position.y + 0.5f)
            {
                aboveMidCounter++;
            }
            else
            {
                aboveMidCounter = 0;
            }

            if (aboveMidCounter == 3)
            {
                transform.position = new Vector3(transform.position.x + (platformWidths[platformSelector] / 2) + distanceBetweenPlatforms, midPlatformHeightPoint.position.y, transform.position.z);

                GameObject midPlatform = objectPools[platformSelector].GetPooledObject();

                midPlatform.transform.position = transform.position;
                midPlatform.transform.rotation = transform.rotation;
                midPlatform.SetActive(true);

                if (Random.Range(0f, 100f) <= powerUpThreshold)
                {
                    powerUpGenerator.SpawnPowerUp(new Vector3(transform.position.x, transform.position.y + 1f, transform.position.z));
                }
                else if (Random.Range(0f, 100f) <= randomCarrotThreshold)
                {
                    coinGenerator.SpawnCoins(new Vector3(transform.position.x, transform.position.y + 1f, transform.position.z));
                }

                transform.position = new Vector3(transform.position.x + (platformWidths[platformSelector] / 2), midPlatformHeightPoint.position.y, transform.position.z);

                aboveMidCounter = 0;
            }
            else
            {
                GameObject newPlatform = objectPools[platformSelector].GetPooledObject();

                newPlatform.transform.position = transform.position;
                newPlatform.transform.rotation = transform.rotation;
                newPlatform.SetActive(true);

                if (Random.Range(0f, 100f) <= powerUpThreshold)
                {
                    powerUpGenerator.SpawnPowerUp(new Vector3(transform.position.x, transform.position.y + 1f, transform.position.z));
                }
                else if (Random.Range(0f, 100f) <= randomCarrotThreshold)
                {
                    coinGenerator.SpawnCoins(new Vector3(transform.position.x, transform.position.y + 1f, transform.position.z));
                }

                transform.position = new Vector3(transform.position.x + (platformWidths[platformSelector] / 2), transform.position.y, transform.position.z);
            }
        }
    }