A * Wegfindung für dynamische Hindernisse und vom Spieler verursachte Blockaden?

11

Hallo, ich erstelle einen TD in Unity 5 und benötige Hilfe bei der Pfadfindung.

Ich werde Arons A * -Pfadfindung für meine KI verwenden, mit der ich dynamische Objekte verwenden und den Pfad zur Laufzeit aktualisieren kann. In meinem Spiel möchte ich jedoch, dass der Spieler die Schergen mit speziellen Türmen blockieren kann, die die Schergen zwingen, den "Blockturm" anzugreifen, um an ihrem Ziel vorbeizukommen.

Wie könnte ich so etwas erreichen?

Bild für mehr Klarheit: Geben Sie hier die Bildbeschreibung ein

Grimbox
quelle

Antworten:

22

Ich habe mir die spezifische Implementierung von A * durch Aaron nicht angesehen, aber mit einem normalen A * könnten Sie den 'Blockturm' als passierbares Gelände einschließen, aber die Heuristik so aktualisieren, dass die 'Kosten' viel höher sind als bei einer normalen Kachel (so dass AI bewertet, ob es einfacher ist, den Block zu zerstören und fortzufahren oder einfach über den Pfad zu gehen, der nicht blockiert ist.

Dann müssten Sie Ihre KI aktualisieren, damit ein Feind, der versucht, von einem normalen Plättchen zu einem Blockturmplättchen zu wechseln, automatisch angreift, bis er zerstört wird.

Jack Frost
quelle
8
+1 Ich möchte hinzufügen, dass Sie möchten, dass die Kosten für den Blockierturm berechnet werden, je nachdem, wie lange es dauern würde, bis X Anzahl und Art der Schergen ihn zerstört, wenn es einen Unterschied gibt. Die voreingestellten Kosten für den Turm sind möglicherweise ungenau, wenn die Schergen der niedrigsten Stufe 5 Sekunden benötigen, um ihn zu zerstören, aber ein Super-Schergen kann dies in 1 Sekunde tun.
Fuzzy Logic
0

Wenn Sie nach einer Art verspottendem Turm suchen, können Sie einen Collider hinzufügen, der als Auslöser festgelegt ist. Wenn die Schergen den Auslöser betreten, werden sie nur per Skript zum Angriff auf den Turm geschrieben.

Wenn Sie möchten, dass die Schergen die Türme nur angreifen, wenn es keine alternativen Pfade gibt. Wenn der Pfad blockiert ist und das A * aufgerufen wird, um einen anderen Pfad zu berechnen, wenn es null zurückgibt, können Sie die Feinde skripten, um alle verspottenden Türme und zu finden ziele auf sie.

Leggy7
quelle