Esempio n. 1
0
    // Update is called once per frame
    void Update()
    {
        if (!IsAlive())
        {
            return;
        }

        switch (HumanState)
        {
        // On commence avec le tutoriel
        case Etape.Tuto:

            // On écrit les consignes dans le texte
            tutoText.text = "OK... Des ennemis vont arriver. " + Environment.NewLine + Environment.NewLine +
                            "Les <b>touches fléchées gauche et droite</b> permettent de verrouiller la visée sur un ennemi, et la <b>touche espace</b> permet de tirer. " + Environment.NewLine + Environment.NewLine +
                            "C'est parti !";

            if (haveWaitedXSec)
            {
                SwitchState(Etape.Moving);
                tutoDone = true;
                gameObject.GetComponent <NavMeshAgent>().speed = 6;
                tutoImage.SetActive(false);
            }

            break;


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

            if (!tutoDone)
            {
                gameObject.GetComponent <NavMeshAgent>().speed = 2;

                X = 7.5f;
                StartCoroutine("WaitXSecond");
                SwitchState(Etape.Tuto);
            }
            else
            {
                // Lorsque le joueur arrive, on enlève sa position dans la list et on passe dans l'étape arrivée
                if (HasArrived())
                {
                    if (destination.Count > 0)
                    {
                        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);

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

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

            break;

        //Se déplace vers le point pour se mettre à couvert
        case Etape.GoCovered:

            if (HasArrived())
            {
                this.transform.rotation = GetDestination().rotation;

                if (haveWaited2Sec)
                {
                    SwitchState(Etape.Covered);
                    StartCoroutine("WaitCovered");
                }
                else
                {
                    StartCoroutine("Wait2Second");
                }
            }


            break;

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

            transform.rotation = Quaternion.Slerp(transform.rotation, GetDestination().rotation, 10 * Time.deltaTime);

            break;

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

            if (HasArrived())
            {
                transform.rotation = GetDestination().rotation;
                SwitchState(Etape.Uncovered);
                //target = ChooseTarget(1);
            }
            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(btnLeft))
            {
                target = ChooseTarget(-1);
            }
            if (Input.GetKeyDown(btnRight))
            {
                target = ChooseTarget(1);
            }


            // Si on peut se mettre à couvert et qu'il nous reste des possibilitées de se cacher on y va
            if (Input.GetKeyDown(btnDown) && actualPosition.ptDecouvert != null && getCoveredTokens > 0)
            {
                getCoveredTokens--;
                col.enabled = false;
                SwitchState(Etape.GoCovered);

                // Se déplace vers le point à couvert
                this.SetDestination(actualPosition.transform);
                MoveToThisPoint(false);
            }

            break;
        }
    }
Esempio n. 2
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;
        }
    }