예제 #1
0
    // Update is called once per frame
    void Update()
    {
        // Если игра не началась, то ничего не происходит
        if (!gameControllerScript.GetIsStarted())
        {
            return;
        }

        if (!IsBossEmitted)
        {
            //Запуск вражеских астероидов и истритбителей
            if (Time.time > nextLaunch)
            {
                int asteroidIndex = Random.Range(0, asteroids.Length);
                nextLaunch = Time.time + Random.Range(minDelay, maxDelay);

                float halfWidth = transform.localScale.x / 2;
                float positionX = Random.Range(-halfWidth, halfWidth);

                Vector3 newAsteroidPosition = new Vector3(positionX, transform.position.y,
                                                          transform.position.z);
                Instantiate(asteroids[asteroidIndex], newAsteroidPosition, Quaternion.Euler(0, 180, 0));
            }

            //запуск корабля подбитого пилота
            if (Time.time > nextDownedPilotLaunch)
            {
                nextDownedPilotLaunch = Time.time + Random.Range(8f, 14f);

                float halfWidth = transform.localScale.x / 2;
                float positionX = Random.Range(-halfWidth, halfWidth);

                Vector3 newdownedPilotPosition = new Vector3(positionX, transform.position.y,
                                                             transform.position.z);
                Instantiate(downedPilot, newdownedPilotPosition, Quaternion.Euler(0, 180, 0));
                Debug.Log("Downed Pilot Launch");
            }
        }


        if (gameControllerScript.menu.activeInHierarchy == false)
        {
            // Периодический запуск щита
            if (Time.time > nextShieldLaunch)
            {
                nextShieldLaunch = Time.time + Random.Range(minShieldDelay, maxShieldDelay);

                float halfWidth = transform.localScale.x / 2;
                float positionX = Random.Range(-halfWidth, halfWidth);

                Vector3 newShieldPosition = new Vector3(positionX, transform.position.y,
                                                        transform.position.z);
                Instantiate(shield, newShieldPosition, Quaternion.Euler(0, 180, 0));
            }


            // Запуск нового блока снарядов
            if (Time.time > nextAmmoLaunch)
            {
                nextAmmoLaunch = Time.time + Random.Range(minAmmoLaunchDelay, maxAmmoLaunchDelay);

                float halfWidth = transform.localScale.x / 2;
                float positionX = Random.Range(-halfWidth, halfWidth);

                Vector3 newAmmoPosition = new Vector3(positionX, transform.position.y,
                                                      transform.position.z);
                Instantiate(ammo, newAmmoPosition, Quaternion.Euler(0, 180, 0));
            }

            // запуск нового комплекта бонусов Wing Support

            if (Time.time > nextWingSupportLaunch)
            {
                nextWingSupportLaunch = Time.time + Random.Range(minWingSupportDelay, maxWingSupportDelay);

                float halfWidth = transform.localScale.x / 2;
                float positionX = Random.Range(-halfWidth, halfWidth);

                Vector3 newWSPosition = new Vector3(positionX, transform.position.y,
                                                    transform.position.z);
                Instantiate(wingSupport, newWSPosition, Quaternion.Euler(0, 180, 0));
            }
        }

        // Увеличиваем уровень сложности (волну)
        if (scoreStep <= gameControllerScript.ShowScore())
        {
            DelayCorrectionLow();
            scoreStep += memoryScoreStep;
            Debug.Log("new wave " + scoreStep);
            gameControllerScript.IncreaseWave();
        }

        // Восстанавливаем первичные показатели задержки при эмиссии объектов

        gameControllerScript.startButton.onClick.AddListener(delegate
        {
            minDelay       = memoryStartMinDelay;
            maxDelay       = memoryStartMaxDelay;
            minShieldDelay = memoryStartMinShieldDelay;
            maxShieldDelay = memoryStartMaxShieldDelay;
        });


        // запускаем босса уровня
        if (gameControllerScript.GetIsBossReady() && !IsBossEmitted)
        {
            StartCoroutine(LaunchBoss());
            IsBossEmitted = true;
        }

        // переключаем статус эмисии босса при нажатии кновки старт в положение выкл
        gameControllerScript.startButton.onClick.AddListener(delegate
        {
            IsBossEmitted = false;
        });
    }