Exemple #1
0
    public void SpawnNextTerrain(bool forceUpdate = false)
    {
        GameObject temp = SCR_Pool.GetFreeObject(PFB_Terrain);

        temp.GetComponent <SCR_Terrain>().Init(lastTerrain.GetComponent <SCR_Terrain>().GetLastHeight(), lastTerrain.GetComponent <SCR_Terrain>().GetLastX(), forceUpdate);
        lastTerrain = temp;
    }
Exemple #2
0
    void SpawnTile(float interval)
    {
        if (collideCount == 0)
        {
            checkTime += Time.deltaTime;
        }
        if (checkTime >= interval && collideCount == 0)
        {
            randomRot                  = Random.Range(0, 3);
            randomSafeZone             = Random.Range(0, 8);
            randomRotation.eulerAngles = new Vector3(0, randomRot * 90, 0);
            random     = Random.Range(0, tile.Length);
            chosenTile = tile[random];

            GameObject currentTile = SCR_Pool.GetFreeObject(chosenTile);
            currentTile.transform.parent = map.transform;
            currentTile.GetComponent <SpawnScript>().Spawn(transform.position, randomRotation);
            if (randomSafeZone == 1 && zoneCheck != 1)
            {
                GameObject safeZoneObj = SCR_Pool.GetFreeObject(safeZone);
                safeZoneObj.transform.parent = map.transform;
                safeZoneObj.GetComponent <SpawnScript>().Spawn(transform.position, transform.rotation);
            }
            checkTime = 0;
        }
    }
    void ChangeCar()
    {
        if (gameState == 0)
        {
            if (currentCar.activeSelf == false)
            {
                chosenCar  = SCR_Pool.GetFreeObject(cars[carID]);
                currentCar = chosenCar;

                chosenCar.GetComponent <SpawnScript>().Spawn(transform.position, transform.rotation);

                if (carsUnlockedOrNot[carID] == false)
                {
                    carDes_text.text = "Locked";
                    GameObject.Find("Change GameState").GetComponent <Image>().color         = Color.gray;
                    GameObject.Find("Change GameState").GetComponent <Button>().interactable = false;
                }
                else if (carsUnlockedOrNot[carID] == true)
                {
                    carDes_text.text = "";
                    GameObject.Find("Change GameState").GetComponent <Image>().color         = Color.white;
                    GameObject.Find("Change GameState").GetComponent <Button>().interactable = true;
                }
            }
        }
    }
    private void Awake()
    {
        SCR_Pool.Flush();
        unlockedOrNot = PlayerPrefs.GetInt("Unlocked");
        if (unlockedOrNot == 0)
        {
            for (int i = 1; i <= cars.Length - 1; i++)
            {
                carsUnlockedOrNot[i] = false;
            }
        }
        else if (unlockedOrNot == 1)
        {
            for (int i = 0; i <= cars.Length - 1; i++)
            {
                carsUnlockedOrNot[i] = true;
            }
        }
        preferredCar = PlayerPrefs.GetInt("PreferredCar");



        chosenCar  = SCR_Pool.GetFreeObject(cars[preferredCar]);
        currentCar = chosenCar;
        chosenCar.GetComponent <SpawnScript>().Spawn(transform.position, transform.rotation);
    }
Exemple #5
0
    void AttackFunc()
    {
        attackTime = attackTime + Time.deltaTime;

        if (currentTarget != null && currentTarget.transform.position.y >= -1)
        {
            ableFire = true;

            float lookStep = 540 * Time.deltaTime;

            for (int i = 0; i <= gunObj.Length - 1; i++)
            {
                lookAtEnemy = Quaternion.LookRotation(currentTarget.GetComponent <EnemyTargetScript>().thisTarget.transform.position - gunObj[i].transform.position);
                gunObj[i].transform.rotation = Quaternion.RotateTowards(gunObj[i].transform.rotation, lookAtEnemy, lookStep);
                if (attackTime >= attackSpeed && ableFire == true)
                {
                    FindObjectOfType <AudioManager>().Play("Shoot");
                    shootPE.Play();
                    GameObject bullet = SCR_Pool.GetFreeObject(playerBullet);
                    bullet.GetComponent <PlayerBulletScript>().Spawn(gunHead[i].transform.position, gunObj[i].transform.rotation);
                    if (gunObj.Length >= 2)
                    {
                        GameObject bullet1 = SCR_Pool.GetFreeObject(playerBullet);
                        bullet1.GetComponent <PlayerBulletScript>().Spawn(gunHead[i + 1].transform.position, gunObj[i].transform.rotation);
                    }

                    attackTime = 0;
                }
            }
        }
        else if (currentTarget == null)
        {
            ableFire = false;
        }
    }
    private void Crash()
    {
        for (int i = 0; i < sprFragment.Length; i++)
        {
            GameObject frag = SCR_Pool.GetFreeObject(PFB_Fragment);
            frag.GetComponent <SCR_Fragment>().Spawn(x, y, sprFragment[i], 100, UFO_SCALE);
        }

        gameObject.SetActive(false);
        SCR_Gameplay.instance.flyingObject = null;

        smokeParticle.SetActive(false);
        crashParticle.transform.position = new Vector3(SCR_Gameplay.SCREEN_W * 0.5f + x, y, crashParticle.transform.position.z);
        foreach (Transform child in crashParticle.transform)
        {
            child.gameObject.SetActive(true);
        }

        broken                     = false;
        brokenCountdown            = 0;
        angle                      = 0;
        transform.localEulerAngles = new Vector3(0, 0, angle);

        SCR_Gameplay.instance.ShakeCamera(0.3f);
        SCR_Gameplay.instance.FlashWhite();
        SCR_Audio.PlayUFOExplosionSound();
    }
    public void ShowDestruction(float x, float y)
    {
        GameObject text = SCR_Pool.GetFreeObject(PFB_Destruction);

        text.transform.SetParent(cvsMain.transform);
        text.GetComponent <SCR_SpecialText>().Spawn(x, y + PUNCH_TEXT_OFFSET_Y);
    }
Exemple #8
0
    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.layer == 9 || other.gameObject.layer == 16 || other.gameObject.layer == 10)
        {
            //Destroy(gameObject);
            //bulletExplo.GetComponent<ParticleSystem>().Play();
            GameObject bulletExplosion = SCR_Pool.GetFreeObject(bulletExplo);
            bulletExplosion.GetComponent <SpawnScript>().Spawn(transform.position, transform.rotation);
            gameObject.SetActive(false);
        }
        if (other.gameObject.CompareTag("Targets"))
        {
            GameObject bulletExplosion = SCR_Pool.GetFreeObject(bulletExplo);
            bulletExplosion.GetComponent <SpawnScript>().Spawn(transform.position, transform.rotation);
            // bulletExplo.GetComponent<ParticleSystem>().Play();
            if (chain == true || fork == true || slow == true)
            {
                Chain();
                Fork();
                Slow();

                if (other.gameObject.GetComponent <ChainOrNot>() != null)
                {
                    other.gameObject.GetComponent <ChainOrNot>().chained = true;
                }
            }
            else if (chain == false && fork == false && slow == false)
            {
                gameObject.SetActive(false);
                //Destroy(gameObject);
            }
        }
    }
Exemple #9
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (gameState == 0)
        {
            gameState = gameController.GetComponent <SceneController>().gameState;
        }

        if (gameState == 1)
        {
            if (doAlready == false)
            {
                if (Application.platform == RuntimePlatform.WindowsPlayer || Application.platform == RuntimePlatform.WindowsEditor)
                {
                    phoneOrPC = 0;
                }
                else if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer)
                {
                    phoneOrPC = 1;
                }
                doAlready = true;
            }

            if (phoneOrPC == 0)
            {
                ConTrolComputer();
            }
            else if (phoneOrPC == 1)
            {
                Move();
            }


            TargetFunc();
            AttackFunc();
            //turretTilt.transform.eulerAngles = tilter.transform.eulerAngles;
        }
        //playerHealth = playerHealth + healFactor;
        if (playerHealth <= orgHealth / 2)
        {
            flame.transform.position = transform.position;
        }
        else
        {
            flame.transform.position = new Vector3(0, -20, 0);
        }
        if (playerHealth <= 0)
        {
            if (dieAlready == false)
            {
                rb.AddForce(5, 20, 5, ForceMode.Impulse);
                StartCoroutine(cameraShake.Shake(.5f, .5f));
                GameObject explosionObj = SCR_Pool.GetFreeObject(explosion);
                explosionObj.GetComponent <SpawnScript>().Spawn(transform.position, transform.rotation);
                gameController.GetComponent <SceneController>().gameOver = true;
                gameOver   = true;
                dieAlready = true;
            }
        }
    }
    public void ShowRicochet(float x, float y)
    {
        GameObject text = SCR_Pool.GetFreeObject(PFB_Ricochet);

        text.transform.SetParent(cvsMain.transform);
        text.GetComponent <SCR_SpecialText>().Spawn(x, y + PUNCH_TEXT_OFFSET_Y);
        //security.GetComponent<SCR_Security>().PerformPunch();
    }
Exemple #11
0
    private void Start()
    {
        character = SCR_Pool.GetFreeObject(PFB_Character);
        character.GetComponent <SCR_Character>().Init();

        lastTerrain = SCR_Pool.GetFreeObject(PFB_Terrain);
        lastTerrain.GetComponent <SCR_Terrain>().Init(START_HEIGHT, -SCR_Action.SCREEN_W * 0.5f);
        for (int i = 0; i < RESERVE_TERRAIN; i++)
        {
            SpawnNextTerrain(false);
        }
    }
 void SpawnPower(float interval)
 {
     timer += Time.deltaTime;
     if (timer >= interval)
     {
         Reposition();
         GameObject powerBox = SCR_Pool.GetFreeObject(giftBox);
         powerBox.GetComponent <SpawnScript>().Spawn(transform.position, transform.rotation);
         //Instantiate(wasp, transform.position, transform.rotation, allEnemy.transform);
         timer = 0;
     }
 }
Exemple #13
0
    public float GetTerrainHeightAtX(float x)
    {
        List <GameObject> terrainList = SCR_Pool.GetObjectList(PFB_Terrain);

        for (int i = 0; i < terrainList.Count; i++)
        {
            SCR_Terrain script = terrainList[i].GetComponent <SCR_Terrain>();
            if (script.GetHeightAt(x) != -1)
            {
                return(script.GetHeightAt(x));
            }
        }
        return(-1);
    }
    // Start game
    private void Start()
    {
        gameState = GameState.TALKING;

        player   = Instantiate(PFB_Player);
        boss     = Instantiate(PFB_Boss[SCR_Profile.bossSelecting]);
        security = Instantiate(PFB_Security[SCR_Profile.bossSelecting]);

        pnlResult.SetActive(false);
        btnReplay.SetActive(false);
        btnMainMenu.SetActive(false);
        imgNotice.SetActive(false);
        txtTutorial.SetActive(false);

        imgDanger.gameObject.SetActive(false);

        SCR_Pool.Flush();
        TriggerTutorial(TutorialStep.GRAB);
        SCR_LightBar.deltaCamera = 0;

        SCR_UnityAnalytics.StartGame();

        internalMoney = SCR_Profile.money;
        txtMoney.GetComponent <Text>().text = internalMoney.ToString();

        txtMoneyAddOriginalPosition  = txtMoneyAdd.GetComponent <RectTransform>().anchoredPosition;
        txtMoneyAddOriginalAnchorMin = txtMoneyAdd.GetComponent <RectTransform>().anchorMin;
        txtMoneyAddOriginalAnchorMax = txtMoneyAdd.GetComponent <RectTransform>().anchorMax;
        txtMoneyAddOriginalAlignment = txtMoneyAdd.GetComponent <Text>().alignment;
        txtMoneyAddOriginalFontSize  = txtMoneyAdd.GetComponent <Text>().fontSize;

        totalReward = 0;

        objectSpawnTime = Random.Range(OBJECT_SPAWN_TIME_MIN, OBJECT_SPAWN_TIME_MAX);
        dangerShowed    = false;
        dangerCounter   = 0;

        powerUpSpawnTime = Random.Range(POWER_UP_SPAWN_TIME_MIN, POWER_UP_SPAWN_TIME_MAX);

        shouldSelect = 0;

        securityProgress = 0;
        imgSecurityProgressFG.fillAmount = 0;

        imgSecurityProgressBG.gameObject.SetActive(false);
        imgSecurityProgressFG.gameObject.SetActive(false);

        firstPizza = true;
        firstDrone = true;
    }
Exemple #15
0
 void Fork()
 {
     if (fork == true)
     {
         Vector3 ForkGeneralDirection = new Vector3(0, transform.rotation.y, 0);
         for (int i = 0; i <= 1; i++)
         {
             GameObject forkBullet = SCR_Pool.GetFreeObject(forkBulletObj);
             forkBullet.GetComponent <ForkBulletScript>().Spawn(transform.position, transform.rotation);
             // Instantiate(forkBullet[i], transform.position, transform.rotation);
             forkBullet.GetComponent <ForkBulletScript>().forkNum = i;
         }
         gameObject.SetActive(false);
         // Destroy(gameObject);
     }
 }
Exemple #16
0
    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.layer == 16 || other.gameObject.layer == 9)
        {
            GameObject bulletExplosion = SCR_Pool.GetFreeObject(bulletExplo);
            bulletExplosion.GetComponent <SpawnScript>().Spawn(transform.position, transform.rotation);
            gameObject.SetActive(false);
        }

        if (other.gameObject.layer == 20)
        {
            GameObject bulletExplosion = SCR_Pool.GetFreeObject(bulletExplo);
            bulletExplosion.GetComponent <SpawnScript>().Spawn(transform.position, transform.rotation);
            gameObject.SetActive(false);
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (playerHolder != null)
        {
            if (Vector3.Distance(playerHolder.transform.position, transform.position) >= 90f && isGrounded == true)
            {
                Physics.IgnoreLayerCollision(10, 16, true);
                health = 100f;
            }
            else if (Vector3.Distance(playerHolder.transform.position, transform.position) < 90f)
            {
                if (doAlready == false)
                {
                    health    = 100f;
                    doAlready = true;
                }
                Physics.IgnoreLayerCollision(10, 16, false);
                if (health <= 0 && killAlready == false && playerHolder != null)
                {
                    randomExploSound = Random.Range(1, 5);
                    FindObjectOfType <AudioManager>().Play("Explosion " + randomExploSound.ToString());
                    // StartCoroutine(cameraShake.Shake(.15f, .4f));
                    playerHolder.GetComponent <PlayerController>().currentTarget = null;
                    GameObject explosionObj = SCR_Pool.GetFreeObject(explosion);
                    explosionObj.GetComponent <SpawnScript>().Spawn(transform.position, transform.rotation);
                    gameController.GetComponent <SceneController>().killCount += 1;

                    /*   for (int i = 0; i <= transform.childCount - 1; i++)
                     * {
                     *     transform.GetChild(i).gameObject.SetActive(false);
                     * } */

                    killAlready = true;
                    gameObject.SetActive(false);
                }
                else if (health > 0)
                {
                    killAlready = false;
                }
                else if (health <= 0 && killAlready == true)
                {
                    killAlready = false;
                }
            }
        }
    }
Exemple #18
0
 // Update is called once per frame
 void FixedUpdate()
 {
     if (playerHolder != null)
     {
         transform.position = new Vector3(tank.transform.position.x, tank.transform.position.y + 0.8f, tank.transform.position.z);
         transform.LookAt(new Vector3(playerHolder.transform.position.x, transform.position.y, playerHolder.transform.position.z));
         attackCount = attackCount + Time.deltaTime;
         if (Vector3.Distance(playerHolder.transform.position, transform.position) < 85)
         {
             if (attackCount > attackSpeed)
             {
                 GameObject enemyBullet = SCR_Pool.GetFreeObject(enemyBulletObj);
                 enemyBullet.GetComponent <EnemyBulletScript>().Spawn(transform.position, transform.rotation);
                 attackCount = 0f;
             }
         }
     }
 }
    private void ShowCombo(float x, float y)
    {
        if (comboCount >= 1)
        {
            //GameObject text = SCR_Pool.GetFreeObject (PFB_Combo[comboCount-1]);
            GameObject text = SCR_Pool.GetFreeObject(PFB_ComboText);
            text.GetComponent <Text>().text = "X" + comboCount;
            text.transform.SetParent(cvsMain.transform);
            text.GetComponent <SCR_ComboText>().Spawn(x, y);

            float startR = 255;
            float startG = 226;
            float startB = 0;

            float endR = 255;
            float endG = 0;
            float endB = 0;

            float startIndex = 2;
            float endIndex   = 10;

            if (comboCount < startIndex)
            {
                text.GetComponent <SCR_ComboText>().SetColor(255, 255, 255);
            }
            else if (comboCount >= endIndex)
            {
                text.GetComponent <SCR_ComboText>().SetColor(endR, endG, endB);
            }
            else
            {
                text.GetComponent <SCR_ComboText>().SetColor(
                    startR + (comboCount - startIndex) / (endIndex - startIndex) * (endR - startR),
                    startG + (comboCount - startIndex) / (endIndex - startIndex) * (endG - startG),
                    startB + (comboCount - startIndex) / (endIndex - startIndex) * (endB - startB));
            }
        }

        if (maxCombo < comboCount)
        {
            maxCombo = comboCount;
        }
    }
Exemple #20
0
 void SpawnTank(float interval)
 {
     if (tank != null)
     {
         if (interval <= 0)
         {
             interval = 0.5f;
         }
         if (aPC != null)
         {
             timerTank = timerTank + Time.deltaTime;
             if (timerTank >= interval)
             {
                 Reposition();
                 GameObject tankCar = SCR_Pool.GetFreeObject(tank);
                 tankCar.transform.parent = allEnemy.transform;
                 tankCar.GetComponent <SpawnScript>().Spawn(transform.position, transform.rotation);
                 //Instantiate(wasp, transform.position, transform.rotation, allEnemy.transform);
                 timerTank = 0;
             }
         }
     }
 }
Exemple #21
0
 void SpawnAPC(float interval)
 {
     if (aPC != null)
     {
         if (interval <= 0)
         {
             interval = 0.3f;
         }
         if (aPC != null)
         {
             timerAPC = timerAPC + Time.deltaTime;
             if (timerAPC >= interval)
             {
                 Reposition();
                 GameObject apcCar = SCR_Pool.GetFreeObject(aPC);
                 apcCar.transform.parent = allEnemy.transform;
                 apcCar.GetComponent <SpawnScript>().Spawn(transform.position, transform.rotation);
                 //Instantiate(wasp, transform.position, transform.rotation, allEnemy.transform);
                 timerAPC = 0;
             }
         }
     }
 }
Exemple #22
0
 void SpawnPoliceCar(float interval)
 {
     if (policeCar != null)
     {
         if (interval <= 0)
         {
             interval = 0.2f;
         }
         if (policeCar != null)
         {
             timerPoliceCar = timerPoliceCar + Time.deltaTime;
             if (timerPoliceCar >= interval)
             {
                 Reposition();
                 GameObject normalPoliceCar = SCR_Pool.GetFreeObject(policeCar);
                 normalPoliceCar.transform.parent = allEnemy.transform;
                 normalPoliceCar.GetComponent <SpawnScript>().Spawn(transform.position, transform.rotation);
                 //Instantiate(wasp, transform.position, transform.rotation, allEnemy.transform);
                 timerPoliceCar = 0;
             }
         }
     }
 }
Exemple #23
0
    // =============================================================
    // =============================================================



    private void Awake()
    {
        // Must go through loading first
        //if (SCR_Loading.loaded == false) {
        //	SceneManager.LoadScene("GSLoading/SCN_Loading");
        //	return;
        //}

        // Singleton
        instance = this;

        // Calculate screen resolution
        SCREEN_RATIO = Screen.width * 1.0f / Screen.height;
        SCREEN_H     = 10.8f;
        SCREEN_W     = 10.8f * SCREEN_RATIO;
        SCREEN_SCALE = Screen.width / SCREEN_W;

        // Set camera
        Camera.main.orthographicSize = SCREEN_H * 0.5f;
        //Camera.main.transform.position = new Vector3 (SCREEN_W * 0.5f, SCREEN_H * 0.5f, -10);

        SCR_Pool.Flush();
    }
    public override void Break()
    {
        base.Break();

        for (int i = 0; i < sprFragment.Length; i++)
        {
            GameObject frag = SCR_Pool.GetFreeObject(PFB_Fragment);
            frag.GetComponent <SCR_Fragment>().Spawn(x, y, sprFragment[i], 200, BALLOON_SCALE);
        }

        destroyParticle.transform.position = new Vector3(SCR_Gameplay.SCREEN_W * 0.5f + x, y, destroyParticle.transform.position.z);
        foreach (Transform child in destroyParticle.transform)
        {
            child.gameObject.SetActive(true);
        }

        gameObject.SetActive(false);
        SCR_Gameplay.instance.flyingObject = null;

        SCR_Gameplay.instance.ShakeCamera(0.3f);
        SCR_Gameplay.instance.FlashWhite();

        SCR_Audio.PlayBalloonExplosionSound();
    }
    // Update
    private void Update()
    {
        // Don't do anything if menu state is not the first state
        if (SCR_Menu.menuLoaded == false)
        {
            return;
        }

        float dt = Time.deltaTime;

        if (Input.GetMouseButton(0))
        {
            float touchX = Input.mousePosition.x * TOUCH_SCALE;
            float touchY = Input.mousePosition.y * TOUCH_SCALE;

            if (gameState == GameState.TALKING)
            {
                gameState = GameState.GRABBING;
                player.GetComponent <SCR_Player>().GoGrabTheBoss();
            }
            else if (gameState == GameState.PUNCHING)
            {
                if (SCR_Profile.showTutorial == 0 ||
                    tutorialStep == TutorialStep.AIM ||
                    tutorialStep == TutorialStep.PUNCH ||
                    tutorialStep == TutorialStep.CONTINUE)
                {
                    player.GetComponent <SCR_Player>().Aim(touchX, touchY + cameraHeight);
                }

                if (SCR_Profile.showTutorial == 1 && tutorialStep == TutorialStep.AIM)
                {
                    tutorialCounter += dt;
                    if (tutorialCounter > TUTORIAL_HOLD_DURATION)
                    {
                        TriggerTutorial(TutorialStep.PUNCH);
                    }
                }
            }
        }
        else
        {
            if (gameState == GameState.GRABBING)
            {
                if (player.GetComponent <SCR_Player>().IsGrabbingTheBoss())
                {
                    gameState = GameState.PUNCHING;
                    player.GetComponent <SCR_Player>().ThrowTheBoss();
                }
            }
            else if (gameState == GameState.PUNCHING)
            {
                player.GetComponent <SCR_Player>().PerformPunch();
            }
            tutorialCounter = 0;
        }

        /*
         * if (Input.GetMouseButtonUp(0) && gameState == GameState.BOSS_RUNNING) {
         *      if (boss.GetComponent<SCR_Boss>().IsRunning()) {
         *              SceneManager.LoadScene("GSMenu/SCN_Menu");
         *              SCR_Audio.PlayClickSound();
         *      }
         * }
         */
        if (gameState == GameState.PUNCHING)
        {
            cameraTarget = boss.GetComponent <SCR_Boss>().y - SCREEN_H + CAMERA_OFFSET_Y;
            if (cameraTarget > cameraHeight)
            {
                float deltaCamera = (cameraTarget - cameraHeight) * dt * CAMERA_SPEED_MULTIPLIER;
                SCR_LightBar.deltaCamera = deltaCamera;

                cameraHeight += deltaCamera;

                player.GetComponent <SCR_Player>().AddDeltaCameraToPlayer(deltaCamera);
                security.GetComponent <SCR_Security>().AddDeltaCameraToSecurity(deltaCamera);

                if (flyingObject != null)
                {
                    flyingObject.GetComponent <SCR_FlyingObject>().AddDeltaCameraToObject(deltaCamera);
                }

                if (powerUp != null)
                {
                    powerUp.GetComponent <SCR_PowerUp>().AddDeltaCameraToObject(deltaCamera);
                }
            }

            if (!breakFurniture)
            {
                if (boss.GetComponent <SCR_Boss>().y > FURNITURE_Y - SCR_Boss.BOSS_SIZE)
                {
                    SCR_Background.BreakFurniture(boss.GetComponent <SCR_Boss>().x, boss.GetComponent <SCR_Boss>().y, boss.GetComponent <SCR_Boss>().speedY);
                    breakFurniture = true;
                }
            }

            if (flyingObject == null)
            {
                if (SCR_Profile.showTutorial == 0)
                {
                    objectCounter += dt;
                    if (objectCounter >= objectSpawnTime - OBJECT_DANGER_BEFORE && !dangerShowed && cameraHeight > 100000)
                    {
                        ShowDanger();
                        dangerShowed = true;
                    }

                    if (objectCounter >= objectSpawnTime)
                    {
                        objectCounter   = 0;
                        objectSpawnTime = Random.Range(OBJECT_SPAWN_TIME_MIN, OBJECT_SPAWN_TIME_MAX);

                        dangerShowed = false;

                        if (cameraHeight > 400000)
                        {
                            flyingObject = SCR_Pool.GetFreeObject(PFB_FlyingObject[2]);
                        }
                        else if (cameraHeight > 250000)
                        {
                            flyingObject = SCR_Pool.GetFreeObject(PFB_FlyingObject[1]);
                        }
                        else if (cameraHeight > 100000)
                        {
                            flyingObject = SCR_Pool.GetFreeObject(PFB_FlyingObject[0]);
                        }

                        if (flyingObject != null)
                        {
                            float x = Random.Range(-(SCREEN_W - SCR_FlyingObject.OBJECT_SIZE) * 0.5f, (SCREEN_W - SCR_FlyingObject.OBJECT_SIZE) * 0.5f);
                            float y = cameraHeight + Random.Range(1.0f, 1.5f) * SCREEN_H;
                            flyingObject.GetComponent <SCR_FlyingObject>().Spawn(x, y);
                        }
                    }
                }
            }
            else
            {
                if (flyingObject.GetComponent <SCR_FlyingObject>().broken == false)
                {
                    if (SCR_Helper.DistanceBetweenTwoPoint(flyingObject.GetComponent <SCR_FlyingObject>().x, flyingObject.GetComponent <SCR_FlyingObject>().y, boss.GetComponent <SCR_Boss>().x, boss.GetComponent <SCR_Boss>().y) < (SCR_FlyingObject.OBJECT_SIZE + SCR_Boss.BOSS_SIZE) * 0.5f)
                    {
                        float bossAngle = SCR_Helper.AngleBetweenTwoPoint(flyingObject.GetComponent <SCR_FlyingObject>().x, flyingObject.GetComponent <SCR_FlyingObject>().y, boss.GetComponent <SCR_Boss>().x, boss.GetComponent <SCR_Boss>().y);
                        boss.GetComponent <SCR_Boss>().CrashIntoObject(bossAngle);
                        flyingObject.GetComponent <SCR_FlyingObject>().Break();

                        firstDrone = false;
                    }

                    else if (SCR_Helper.DistanceBetweenTwoPoint(flyingObject.GetComponent <SCR_FlyingObject>().x, flyingObject.GetComponent <SCR_FlyingObject>().y, player.GetComponent <SCR_Player>().x, player.GetComponent <SCR_Player>().y) < (SCR_FlyingObject.OBJECT_SIZE + SCR_Player.PLAYER_SIZE) * 0.5f)
                    {
                        flyingObject.GetComponent <SCR_FlyingObject>().Break();

                        firstDrone = false;
                    }
                }
            }

            if (powerUp == null || !powerUp.activeSelf)
            {
                if (SCR_Profile.showTutorial == 0)
                {
                    powerUpCounter += dt;
                    if (powerUpCounter >= powerUpSpawnTime)
                    {
                        powerUpCounter   = 0;
                        powerUpSpawnTime = Random.Range(POWER_UP_SPAWN_TIME_MIN, POWER_UP_SPAWN_TIME_MAX);

                        int choose = Random.Range(0, (int)PowerUpType.COUNT);
                        powerUp = SCR_Pool.GetFreeObject(PFB_PowerUp[choose]);
                        powerUp.GetComponent <SCR_PowerUp>().Spawn();
                    }
                }
            }
            else
            {
                float powerUpX = powerUp.GetComponent <SCR_PowerUp>().x;
                float powerUpY = powerUp.GetComponent <SCR_PowerUp>().y;
                float bossX    = boss.GetComponent <SCR_Boss>().x;
                float bossY    = boss.GetComponent <SCR_Boss>().y;
                float playerX  = player.GetComponent <SCR_Player>().x;
                float playerY  = player.GetComponent <SCR_Player>().y;

                float bossEdibleDistance      = (SCR_PowerUp.POWER_UP_SIZE + SCR_Boss.BOSS_SIZE) * 0.5f;
                float playerEdibleDistance    = (SCR_PowerUp.POWER_UP_SIZE + SCR_Player.PLAYER_SIZE) * 0.5f;
                float bossDistanceToPowerUp   = SCR_Helper.DistanceBetweenTwoPoint(powerUpX, powerUpY, bossX, bossY);
                float playerDistanceToPowerUp = SCR_Helper.DistanceBetweenTwoPoint(powerUpX, powerUpY, playerX, playerY);

                if (firstPizza)
                {
                    for (int i = 0; i < 5; i++)
                    {
                        bossX += boss.GetComponent <SCR_Boss>().speedX *dt;
                        bossY += boss.GetComponent <SCR_Boss>().speedY *dt;
                        if (SCR_Helper.DistanceBetweenTwoPoint(powerUpX, powerUpY, bossX, bossY) <= bossEdibleDistance)
                        {
                            Time.timeScale = 0.01f;
                            firstPizza     = false;
                            break;
                        }

                        playerX += player.GetComponent <SCR_Player>().speedX *dt;
                        playerY += player.GetComponent <SCR_Player>().speedY *dt;
                        if (SCR_Helper.DistanceBetweenTwoPoint(powerUpX, powerUpY, playerX, playerY) <= playerEdibleDistance)
                        {
                            Time.timeScale = 0.01f;
                            firstPizza     = false;
                            break;
                        }
                    }
                }

                if (bossDistanceToPowerUp < bossEdibleDistance || playerDistanceToPowerUp < playerEdibleDistance)
                {
                    if (powerUp.GetComponent <SCR_PowerUp>().type == PowerUpType.PIZZA)
                    {
                        boss.GetComponent <SCR_Boss>().Enlarge();
                    }
                    else if (powerUp.GetComponent <SCR_PowerUp>().type == PowerUpType.BUBBLE)
                    {
                        boss.GetComponent <SCR_Boss>().Bubble();
                    }
                    else if (powerUp.GetComponent <SCR_PowerUp>().type == PowerUpType.MAGNET)
                    {
                        boss.GetComponent <SCR_Boss>().Magnet();
                    }

                    powerUp.SetActive(false);
                    powerUp = null;
                }
                else if (powerUpY <= cameraHeight - SCR_PowerUp.POWER_UP_SIZE)
                {
                    powerUp.SetActive(false);
                    powerUp = null;
                }
            }
        }
        else if (gameState == GameState.BOSS_FALLING)
        {
            float deltaCamera = -cameraHeight * dt * CAMERA_SPEED_MULTIPLIER;
            if (deltaCamera > -1)
            {
                deltaCamera = -1;
            }
            SCR_LightBar.deltaCamera = deltaCamera;

            cameraHeight += deltaCamera;

            player.GetComponent <SCR_Player>().TurnOffCrossHair();

            if (cameraHeight < CAMERA_ENDING_Y)
            {
                gameState = GameState.BOSS_RUNNING;
                player.GetComponent <SCR_Player>().ReAdjustY();
                boss.GetComponent <SCR_Boss>().ReAdjustY();
            }
        }
        else if (gameState == GameState.BOSS_RUNNING)
        {
            float deltaCamera = -cameraHeight * dt * CAMERA_SPEED_MULTIPLIER;
            if (deltaCamera > -1)
            {
                deltaCamera = -1;
            }
            cameraHeight += deltaCamera;
            if (cameraHeight < 0)
            {
                cameraHeight = 0;
            }
        }

        SCR_Background.SetCameraY(cameraHeight);

        if (cameraShakeTime > 0)
        {
            cameraShakeTime -= dt;
            Camera.main.transform.position = new Vector3(SCREEN_W * 0.5f + Random.Range(-CAMERA_SHAKE_AMOUNT, CAMERA_SHAKE_AMOUNT), SCREEN_H * 0.5f + cameraHeight + Random.Range(-CAMERA_SHAKE_AMOUNT, CAMERA_SHAKE_AMOUNT), Camera.main.transform.position.z);
        }
        else
        {
            Camera.main.transform.position = new Vector3(SCREEN_W * 0.5f, SCREEN_H * 0.5f + cameraHeight, Camera.main.transform.position.z);
        }

        if (comboTime > 0)
        {
            comboTime -= dt;
            if (comboTime <= 0)
            {
                comboTime  = 0;
                comboCount = 0;

                /*
                 * for (int i=1; i<imgCombo.Length; i++) {
                 *      imgCombo[i].SetActive (false);
                 * }
                 * imgCombo[0].SetActive (true);
                 */
            }
        }
        //imgClockContent.GetComponent<Image>().fillAmount = comboTime / COMBO_TIME;

        if (boss.GetComponent <SCR_Boss>().y * 0.01f - 3 > maxBossY)
        {
            maxBossY = (int)(boss.GetComponent <SCR_Boss>().y * 0.01f - 3);
            txtCurrentHeight.GetComponent <Text>().text = maxBossY.ToString();
        }

        if (SCR_Profile.showTutorial == 1)
        {
            if (tutorialStep != TutorialStep.AIM && Time.timeScale < 1)
            {
                Time.timeScale += dt * 2.0f;
                if (Time.timeScale > 1)
                {
                    Time.timeScale = 1;
                }
            }
        }
        else
        {
            if (Time.timeScale < 1)
            {
                Time.timeScale += dt * 3.0f;
                if (Time.timeScale > 1)
                {
                    Time.timeScale = 1;
                }
            }
        }

        if (flashWhiteAlpha > 0)
        {
            flashWhiteAlpha -= dt * 2.0f;
            if (flashWhiteAlpha < 0)
            {
                flashWhiteAlpha = 0;
            }

            Color color = pnlFlashWhite.GetComponent <Image>().color;
            color.a = flashWhiteAlpha;
            pnlFlashWhite.GetComponent <Image>().color = color;
        }

        if (SCR_Profile.showTutorial == 0)
        {
            if (tutorialAlpha > 0)
            {
                tutorialAlpha -= TUTORIAL_FADE_SPEED * dt;
                if (tutorialAlpha < 0)
                {
                    tutorialAlpha = 0;
                }
                Color color = txtTutorial.GetComponent <Text>().color;
                color.a = tutorialAlpha;
                txtTutorial.GetComponent <Text>().color = color;
            }
        }


        if (SCR_Profile.money - internalMoney > 1000)
        {
            internalMoney += 57;
        }
        else if (SCR_Profile.money - internalMoney > 100)
        {
            internalMoney += 13;
        }
        else if (SCR_Profile.money - internalMoney > 10)
        {
            internalMoney += 7;
        }
        else if (SCR_Profile.money - internalMoney > 0)
        {
            internalMoney += 1;
        }

        if (SCR_Profile.money - internalMoney < -1000)
        {
            internalMoney -= 57;
        }
        else if (SCR_Profile.money - internalMoney < -100)
        {
            internalMoney -= 13;
        }
        else if (SCR_Profile.money - internalMoney < -10)
        {
            internalMoney -= 7;
        }
        else if (SCR_Profile.money - internalMoney < 0)
        {
            internalMoney -= 1;
        }

        txtMoney.GetComponent <Text>().text = internalMoney.ToString();
    }