// 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; } }