Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        if (_state == GameConstants.GameStates.Playing)
        {
            _traveledDistance += _currentSpeed * Time.deltaTime;

            UpdateUi();

            int amount = Time.timeSinceLevelLoad < 30.0f ? 1 : 2;

            if (Time.timeSinceLevelLoad >= _nextSpawn)
            {
                bool spawnCones = Random.Range(0, 100) <= 12;

                if (spawnCones)
                {
                    _hazardSpawner.SpawnPoliceCones();
                }
                else
                {
                    _hazardSpawner.Spawn(amount);
                }
                _nextSpawn = Time.timeSinceLevelLoad + spawnTimeGap;
            }

            if (Time.timeSinceLevelLoad >= 0 && Time.timeSinceLevelLoad <= 15)
            {
                _currentSpeed += 0.3f * Time.deltaTime;
                spawnTimeGap  -= 0.05f * Time.deltaTime;
            }
            else if (Time.timeSinceLevelLoad >= 15 && Time.timeSinceLevelLoad <= 30)
            {
                _currentSpeed += 0.2f * Time.deltaTime;
                spawnTimeGap  -= 0.03f * Time.deltaTime;
            }
            else
            {
                _currentSpeed += 0.15f * Time.deltaTime;
                spawnTimeGap  -= 0.02f * Time.deltaTime;
            }

            _currentSpeed = Mathf.Clamp(_currentSpeed, 0.0f, maxSpeed);
            spawnTimeGap  = Mathf.Clamp(spawnTimeGap, 0.2f, 3.0f);
        }
    }