コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        //FSM que maneja el flujo de la partida.
        switch (GameState)
        {
        //Si el estado es "Starting" comienza a correr la cuenta regresiva para iniciar la carrera. Se actualiza el texto correspondiente.
        case GameStates.Starting:
            if (startTimer <= 3 && startTimer > 0)
            {
                UIControl.SetStartText(Mathf.Ceil(startTimer).ToString());
            }
            else if (startTimer <= 0)
            {
                UIControl.SetStartText("GO!");
                GameState = GameStates.Playing; //Al completar la cuenta regresiva, se inicia la carrera.
                CarControl.StartCar();          //Se cambia el estado del auto de "Stopped" a "Accelerating".
            }
            startTimer -= Time.deltaTime;
            break;

        //Si el estado es "Playing", se actualiza el cronómetro del tiempo de la carrera.
        case GameStates.Playing:

            if (GameTimer <= 0 || CarControl.CarState == CarController.CarStates.Destroyed)
            {
                GameState = GameStates.Ending;     //Si el cronómetro llega a 0, se termina la carrera, pero no todavía la partida.
            }
            GameTimer -= Time.deltaTime;
            break;

        //Si el estado es "Ending", se comienza a frenar el auto
        case GameStates.Ending:
            if (CarControl.CarState != CarController.CarStates.Stopping && CarControl.CarState != CarController.CarStates.Stopped)
            {
                CarControl.StopCar();     //Si el auto se está moviendo, se aplica la fuerza de freno.
            }
            else if (CarControl.CarState == CarController.CarStates.Stopped)
            {
                EndGame();     //Si la velocidad del auto ya llegó a 0, se termina la partida.
                GameState = GameStates.Ended;
            }

            break;

        case GameStates.Ended:

            break;
        }
    }