Beispiel #1
0
    void driftZoneMode(string nextTileDirection)
    {
        if (previousMode != "FORWARD")
        {
            //keep drifting until user respond
            driftmode(previousMode);
        }

        if (previousMode == "FORWARD")
        {
            transform.Translate(0, 0, Time.deltaTime * forwardSpeed);
        }

        //User input
        userInputVer = Input.GetAxisRaw("Vertical");

        //User input
        bool earlyDrift;

        //Game Over when player tap too early
        if (swipeController.Tap == true && readyDrift == false)
        {
            GameOverDriftDirection = previousMode;
            previousMode           = mode;
            mode           = "GAMEOVER";
            gameOverReason = "EARLY DRIFT";
        }

        //If input is tap
        //Enter Drift Mode
        bool tmpInput = (touchTap == 1 || userInputVer == -1);

        if (tmpInput && nextTileDirection != "FORWARD" && mode != "GAMEOVER")
        {
            //If player in perfect drift zone. Get Bonus
            if (perfectDrift == true)
            {
                scoreController.increaseMultiplier();
                fireWorksController.playFireworks();
                //SoundEffect
                soundEffectController.playMultiplier(scoreController.getMultiplier() - 0.5f);
            }
            else
            {
                //Not Perfect, reset multiplier back to 1;
                scoreController.resetScoreMultiplier();
            }

            //Active Drift FX
            onDriftFX();

            //Play sound
            //soundEffectController.playHeaySwoosh();

            //If player came from forward tile.
            if (previousMode == "FORWARD")
            {
                //Car slows down
                transform.Translate(0, 0, Time.deltaTime * turnSpeed); // move forward

                //Shake Camera
                cameraController.startLongLightShake();
            }

            //Switch mode according to tile curve direction
            if (nextTileDirection == "LEFT")
            {
                //Switch to left mode
                previousMode = mode;
                mode         = "LEFT";
                turnGear     = 0;
                //If the car is already drifting light
                if (animMode == "DriftRight")
                {
                    //Turn car from Right to Left
                    animController.playDriftRightToLeft();
                }
                else
                {
                    animController.playDriftLeft();
                }


                //update animation mode
                animMode = "DriftLeft";
            }
            else if (nextTileDirection == "RIGHT")
            {
                //Switch to Right Mode
                previousMode = mode;
                mode         = "RIGHT";
                turnGear     = 0;

                //If the car is already drifting left
                if (animMode == "DriftLeft")
                {
                    animController.playDriftLeftToRight();
                }
                else
                {
                    animController.playDriftRight();
                }

                //Update animation mode
                animMode = "DriftRight";
            }
        }


        //Back to forward Tile
        if (nextTileDirection == "FORWARD" && mode != "GAMEOVER")
        {
            //Swipe Up
            //if (swipeController.Tap || userInputVer == 1)
            if (tmpInput || userInputVer == 1)
            {
                //If player in perfect drift zone. Get Bonus
                if (perfectDrift == true)
                {
                    scoreController.increaseMultiplier();
                    fireWorksController.playFireworks();
                    soundEffectController.playMultiplier(scoreController.getMultiplier());
                }
                else
                {
                    //Not Perfect, reset multiplier back to 1;
                    scoreController.resetScoreMultiplier();
                }


                //player animation
                if (animMode == "DriftLeft")
                {
                    animController.playDriftLeftToIdle();
                }
                else if (animMode == "DriftRight")
                {
                    animController.playDriftRightToIdle();
                }

                mode = "PREFORWARD";
                StartCoroutine(delayForward());

                previousMode = mode;

                animMode = "IDLE";
            }
        }
    }