void UpdateState() { switch (state) { case BotState.IDLE: if (Input.GetMouseButtonDown(0)) { Ray r = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(r, out hit)) { agent.SetDestination(hit.point); } } if (Input.GetMouseButtonDown(1)) { Ray r = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(r, out hit)) { Vector3 dir = hit.point - transform.position; bot.ShootInDirection(dir); } } // debug pour afficher si on voit notre drapeau et éventuellement son porteur bool sees_flag = bot.CanSeeObject(team.team_flag.gameObject); bool sees_carrier = false; int carrier_ID = master.GetFlagCarrierID(team.team_ID); if (carrier_ID != -1 && bot.CanSeeObject(master.GetBotFromID(carrier_ID))) { sees_carrier = true; } GizmosService.Text("flag ? " + sees_flag, transform.position - Vector3.right * 4); GizmosService.Text("carrier ? " + sees_carrier, transform.position - Vector3.right * 8); GizmosService.Cone(transform.position, transform.forward, transform.up, 100, 70); break; } }
void Update() { GizmosService.Text(state.ToString(), transform.position + Vector3.forward, 0.01f, Color.white); score = master.GetScore(bot.team_ID); // récupère le score GizmosService.Cone(transform.position, transform.forward, Vector3.up, 10, 70); // --> affiche le cône de vision //LetGo(); // --> CheckFlag(); // --> si je porte le drapeau, passe en mode ReturnHomeWithFlag UpdateState(); // --> exécute les instructions de chaque état //SearchForFlag(); // --> chercher le drapeau allié si je ne le vois pas CheckEnnemy(); // --> permet de tier sur les ennemis if (bot.is_dead == true) { SwitchState(BotState.IDLE); // --> si je suis mort, passe dans l'état Idle team.SendMessageToTeam("ImDead"); // --> si je veux envoyer un message à ma mort } }
private void Feedbacks() { GizmosService.Text(state.ToString() + bot.can_shoot.ToString(), transform.position + Vector3.forward, 0.01f, Color.white); GizmosService.Cone(transform.position, transform.forward, Vector3.up, 10, 70); }