Beispiel #1
0
    // Update is called once per frame
    void Update()
    {
        if (!activePlayerInstance)
        {
            if (Input.GetKeyDown(KeyCode.Alpha1) && characters.Count > 0)
            {
                SpawnCharacter(characters[0]);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha2) && characters.Count > 1)
            {
                SpawnCharacter(characters[1]);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha3) && characters.Count > 2)
            {
                SpawnCharacter(characters[2]);
            }
        }

        //update UI
        if (activePlayerInstance)
        {
            Health playerHealth = activePlayerInstance.GetComponent <Health>();
            if (playerHealth)
            {
                playerHealthText.text = Mathf.Max(0, playerHealth.currentHealth).ToString();
            }
            else
            {
                playerHealthText.text = "No Health";
            }
        }
        else
        {
            playerHealthText.text = "???";
        }

        if (scoreText)
        {
            scoreText.text = string.Format("Score: {0}", score);
        }

        float enemyMultiplier = 1;

        if (progressManager)
        {
            var progressStage = progressManager.GetCurrentStage();
            if (progressStage != null)
            {
                enemyMultiplier = progressStage.enemyMultiplier;
            }
        }

        //spawn
        if (activeEnemies.Count < maxEnemies * enemyMultiplier)
        {
            var enemy = PickRandomEnemy(enemies);
            SpawnEnemy(enemy);
        }

        //spawn flying
        if (activeFlyingEnemies.Count < maxFlyingEnemies * enemyMultiplier)
        {
            var enemy = PickRandomEnemy(flyingEnemies);
            SpawnFlyingEnemy(enemy);
        }

        optimiseEnemyTick += Time.deltaTime;
        if (optimiseEnemyTick > 1.0f)
        {
            //cleanup null enemies
            activeEnemies.RemoveAll(v => v == null);
            activeFlyingEnemies.RemoveAll(v => v == null);
            //optimise enemies
            OptimiseEnemies(activeEnemies);
            //OptimiseEnemies(activeFlyingEnemies); //don't optimise flying enemies or they can't fly to the player
            optimiseEnemyTick = 0;
        }

        //mute button
        if (Input.GetButtonDown("Mute"))
        {
            AudioListener audioListener = followCamera.GetComponent <AudioListener>();
            audioListener.enabled = !audioListener.enabled;
        }
        if (Input.GetButtonDown("PixelScaleToggle"))
        {
            var pixelScaleHelper = followCamera.GetComponent <PixelCameraHelper>();
            if (pixelScaleHelper)
            {
                pixelScaleHelper.pixelScale = pixelScaleHelper.pixelScale == 1 ? 2 : 1;
            }
        }
    }