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