Example #1
0
    // Update is called once per frame
    void Update()
    {
        if (!IsAlive())
        {
            return;
        }

        switch (HumanState)
        {
        // Si le joueur arrive à destination, on passe dans l'étape "Arrived"
        case Etape.Moving:

            // Lorsque le joueur arrive, on enlève sa position dans la list et on passe dans l'étape arrivée
            if (HasArrived())
            {
                actualPosition = destination[0];
                destination.RemoveAt(0);
                SwitchState(Etape.Arrived);
            }

            break;

        // Si le joueur est arrivé, on fait spawn les ennemis et on passe dans l'étape "Covered"
        case Etape.Arrived:

            if (!EnemiesFind)
            {
                FindEnemies();
            }

            SwitchState(Etape.GoCovered);

            break;

        case Etape.GoCovered:

            transform.rotation = Quaternion.Slerp(transform.rotation, GetDestination().rotation, 10 * Time.deltaTime);
            if (Mathf.Approximately(transform.rotation.y, GetDestination().rotation.y))
            {
                SwitchState(Etape.Covered);
            }

            //switch cam position
            CamMngr.SwitchPosCam("TPS");

            // Se déplace vers le check point
            SetDestination(actualPosition.transform);
            MoveToThisPoint();

            break;

        // Si le joueur est à couvert, un appuie sur le bouton haut nous fait passer dans l'étape "Uncovered"
        case Etape.Covered:

            //Go to Undercovered State
            if (Input.GetKeyDown(KeyCode.UpArrow))
            {
                SwitchState(Etape.GoUncovered);
                //switch cam position
                CamMngr.SwitchPosCam("FPS");

                // Se déplace vers le point de découverte
                this.SetDestination(actualPosition.ptDecouvert.transform);
                MoveToThisPoint();
            }

            break;

        // si appuie sur touche "haut", déplacement vers le point de découvert
        case Etape.GoUncovered:

            if (!CamMngr.IsMoving())
            {
                SwitchState(Etape.Uncovered);
            }
            break;

        // Lorsque que le joueur arrive au point de destination, il est à découvert et peut tirer
        case Etape.Uncovered:

            //Look enemy and shoot
            if (target)
            {
                LookToTarget();

                if (Input.GetKeyDown(btnTir))
                {
                    Fire();
                }
            }

            //Choose Enemy
            if (Input.GetKeyDown(KeyCode.LeftArrow))
            {
                target = ChooseTarget(-1);
            }
            if (Input.GetKeyDown(KeyCode.RightArrow))
            {
                target = ChooseTarget(1);
            }


            //Go to Covered State
            if (Input.GetKeyDown(KeyCode.DownArrow))
            {
                col.enabled = false;
                SwitchState(Etape.Covered);
            }

            break;
        }
    }