예제 #1
0
 private void PrepareForMeeting(BotMonolithic bot, BotMonolithic other, Vector3 currentMeetingPosition,
                                int meetingDuration)
 {
     bot._lastState   = bot.currentState;
     bot.currentState = State.Meet;
     // pregatesc pentru intalnire botul bot si botul other pentru intalnire
     bot._agent.isStopped   = false;                  // ma asigur ca nu sunt opriti
     bot._agent.destination = currentMeetingPosition; // pun destinatia
     bot._meetingPoint      =
         currentMeetingPosition;                      // spun meeting point de vazut in inspector, nu fac nimic din cod cu el
     bot.inMeeting            = true;                 // sunt in drum spre intalnire
     bot.meetingBotMonolithic = other;                // cu cine se intalneste
     bot.talkDuration         = meetingDuration;      // cat timp dureaza intalnirea
 }
예제 #2
0
        private void EndMeeting(BotMonolithic bot)
        {
            bot.currentState = bot._lastState;
            // trebuie sa am grija sa resetez toate variabilele pentru amandoi botii, nu doar pentru unul dintr ei
            bot._obstacle.enabled = false; // obstacolul este fals
            bot._agent.enabled    = true;
            bot._agent.isStopped  = false; // ma asiugur ca navmeshagentul este activ si poate merge
            bot.inMeeting         = false; // nu mai este in intalnire

            bot.talkDuration    = 0;       // intalnirea dureaza 0 secunde, la fel e doar pt initializare sa fie 0 in inspector
            bot.currentTalkTime = 0;       // resetez cronometrul de vorbit

            bot.currentState    = State.Patrol;
            bot._startPatroling = false; // inapoi la starea initiala
            bot.talking         = false; // numai vorbeste

            bot._lastFinishedMeetingTime =
                Time.time; // intalnirea s-a terminat la timpul Time.time(cate secunde au trecut de la inceputul jocului)
            bot._animator.SetBool("talking", false);
        }
예제 #3
0
        private int CompareBotMonolithic(BotMonolithic a, BotMonolithic b)
        {
            // pt a compara botii a si b in functie de distanta. returneaza bot-ul cel mai apropiat de cel curent
            var dista = Vector3.Distance(transform.position, a.gameObject.transform.position);

            var distb = Vector3.Distance(transform.position, b.gameObject.transform.position);

            if (dista == distb)
            {
                return(0);
            }
            if (dista < distb)
            {
                return(-1); // botul a
            }
            else
            {
                return(1); // botul b
            }
        }