コード例 #1
0
    // Update is called once per frame
    private void Update()
    {
        //todo change stuff later to an observer pattern
        PlayerController playerController = m_player.GetComponent <PlayerController>();
        CameraController cameraController = m_camera.GetComponent <CameraController>();

        //check if the back button has been pressed
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            MemoryCard.LoadMenu();
        }

        //has the player beaten the level / fallen outside the level / still playing
        if (playerController.isFinished())
        {
            //remove player control because he has beaten the level
            p_levelControl.GetComponent <LevelTilt>().m_playerHasControl = false;

            //update the highscore if the player was faster
            if (p_timeInSeconds < p_bestTimeInSeconds || p_bestTimeInSeconds == 0)
            {
                MemoryCard.SaveHighscore(new Highscore(MemoryCard.GetScene(), p_timeInSeconds));
                m_bestTime.text = p_timeInSeconds.ToString("f2");
            }

            //start cameranimation once player is out of bounds
            if (playerController.isOutOfBounds())
            {
                p_lookAtPosition.transform.position = new Vector3(m_endCamera, 0, 0);
                m_camera.GetComponent <CameraController>().m_lookAt     = p_lookAtPosition.transform;
                m_camera.GetComponent <CameraController>().m_smoothTime = p_cameraSmoothTime * 4;

                if (m_camera.transform.position.x > m_endCamera / 2)
                {
                    MemoryCard.LoadNextLevel();
                }
            }
        }
        else if (playerController.isOutOfBounds())
        {
            ResetLevel();
            playerController.setOutOfBounds(false);
        }
        else
        {
            //start the timer once the player has control
            if (p_levelControl.GetComponent <LevelTilt>().m_playerHasControl)
            {
                p_timeInSeconds   += Time.deltaTime;
                m_currentTime.text = p_timeInSeconds.ToString("f2");
            }
        }
    }