AI stoppt komplett wenn Spieler Navmesh verlässt

  • Guten Abend zusammen,


    ich arbeite seit 1-2 Abenden an einer kleinen AI. Sie arbeitet mit einem Behavior Tree und kann: Roaming, Spieler verfolgen und Angreifen.


    Gestern schien alles super zu laufen, doch heute fällt mir folgender Fehler auf:


    Wenn mein Spieler das Navmesh des Gegners betritt arbeitet alles wie es soll. Gegner läuft spazieren, wenn er mich sieht, kommt er zu mir und greift an. Solange der Spieler im Navmesh bleibt, läuft alles fein.

    Nun verlässt der Spieler das Navmesh des Gegners und dieser bleibt stehen - was klar ist, da er sich nich ausserhalb des Navmesh bewegen kann.


    Wenn der Spieler nun aber wieder das Navmesh betritt, bleibt der Gegner dennoch einfach stehen. Im Behavior Tree wird alles gefeuert (Spieler verfolgen) aber... Arbeitsverweigerung. Gegner bleibt stehen und läuft nicht mehr.


    Wo könnte ich da nen Fehler drin haben?

  • Ich denke einfach mal das du irgendwo ja den Zielpunkt übergibst (also dein Spieler).

    Wenn jetzt deine AI zum Spieler rennen soll und die nicht auf dem Mesh steht findet er keinen Weg zum Spieler.


    Der Grund wieso er sich nicht bewegt, könnte sein das er immer noch den Weg zu der letzten fehlerhaften Position sucht.


    Du musst also entweder die Position immer erneuern, egal ob sie erreicht wurde oder eben nicht.

    Oder aber du fängst ab das ungültige Punkte ab.


    Die beste Lösung ist denke ich mal, das du einen Timer einbaust der nach X Sekunden wenn das Ziel nicht erreicht wurde, ein neues Ziel sucht.

    Wie viel Zeit X ist kannst du ja nach der Entfernung definieren.

    Als Zusatz kannst du auch abfangen das er ein neues Ziel sucht wenn er sich X Sekunden nicht mehr bewegt also Speed = 0 ist.