PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [RMXP]-Pfadfindung, wie?



Oestinator
08.07.2008, 18:36
Also folgendes Problem:
Ich habe jetzt als Event einen Soldaten, der von seiner Patrouille abgekommen ist, jetzt soll er von alleine wieder zu diesem bestimmten Punkt kommen, was ja an und für sich kein Problem ist, wenn auf dem Weg dorthin keine Hindernisse wären, da diese nämlich seinen Weg unterbrechen.

Meine Frage ist nun, wie ich eine halbwegs intelligente Pfadfindung erstellen kann, die es meinem Soldaten ermöglichen, problemlos zum Ziel zu gelangen?
Ich habe schon daran gedacht, jedes Hinderniss als Event darzustellen und diese mit dem Soldaten über Map-Variablen zu vergleichen, sodass im Falle einer Übereinstimmung beider Events ein Schritt vom Hinderniss weg bewegt und dann seinen eigentlichen Weg fortsetzt, aber mal davon abgesehen, dass diese Lösung viel zu aufwendig ist, bin ich mir auch nicht sicher, dass es letztendlich funktionieren würde :/

Naja, es wäre toll, wenn mir jemand in der Sache etwas helfen könnte und notfalls würde ich auch ein Ruby-Skript annehmen, auch wenn ich die Sache nicht ganz verstehe...

Edit: Achja, bevor ich's vergesse, hier ist der Code, den ich bis jetzt habe:



Control Variables:[XWache1]-=[XWegpunkt]
Control Variables:[YWache1]-=[YWegpunkt]

Conditional Branch: Variable[YWache1] > 0
Set Move Route:[Soldat]
:<$Move Up

Branch End

Conditional Branch: Variable[YWache1] < 0
Set Move Route:[Soldat]
:<$Move Down

Branch End

Conditional Branch: Variable[XWache1] > 0
Set Move Route:[Soldat]
:<$Move Left

Branch End

Conditional Branch: Variable[XWache1] < 0
Set Move Route:[Soldat]
:<$Move Right

Branch End

Ja, ziemlich billig gemacht bis jetzt, ich weiß >_>"

diäitsch
08.07.2008, 18:45
Sorry, aber so ganz verstehe ich dein Problem nicht:\
-Du könntest diese Hindernisse entfernen,
-am Anfang der Move Route den Befehl "Through" setzen, würde aber nur bei kleinen Steinen etc. logisch aussehen, also nicht für Bäume etc. geeignet,
-oder du stellst die Move Route so ein, das er die Hindernisse umgeht.

MfG, diäitsch

Edit: Oh, habe den Code übersehen, jetzt bezweifle ich, das dir meine Tipps helfen.

Oestinator
08.07.2008, 18:53
Sorry, aber so ganz verstehe ich dein Problem nicht:\
Ich hab mich wohl etwas undeutlich ausgedrückt. Ich habe nämlich vor für Gegnertypen eine Art "KI" zu entwickeln, die nachdem diese die Verfolgung auf den Helden aufgeben, wieder auf ihren alten Standort zurückkehren um wieder zu patrouillieren, was sich mit normalen Movement-Events leider nicht lösen lässt ^^

MagicMagor
09.07.2008, 08:54
Es gibt für den XP einige Pfadfindungsskripte, sofern ich mich nicht irre. Such mal in XP-Foren nach "Pathfinding" und "A*".

Alternativ kannst du selber nach A* suchen und den Algo. nachbauen, ob sich dafür allerdings der Eventcode eignet ist eine andere Sache.

Oestinator
09.07.2008, 12:00
Nach längerem Suchen habe ich sogar ein geeignetes Script gefunden, mit dem es sich auch gut arbeiten lässt. Damit müsste das Problem gelöst, danke MagicMagor.