예제 #1
0
    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;
        }
    }
예제 #2
0
 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
     }
 }
예제 #3
0
 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);
 }