Hallöchen!
Hab ein technisches Problem. Ich hab überlegt, ob ich's nicht doch in's Dev-Comm Forum schreiben sollte, weil's eigentlich relativ wenig mitm Maker gemein hat, bzw. werde ich es vielleicht mal in ner Programmiersprache schreiben. Egal, ich schreib's erstmal hier hin.
Folgendes:
Ich bin dabei ein Pathfinding Skript zu schreiben. Nichts wahnsinniges, aber schon etwas knifflig. Ich dachte, ich fang einfach an und erweitere das evtl.
Im Moment benutze ich Wall-Tracing. Das bedeutet, dass der Held versucht zum Ziel zu gelangen, bis er auf eine Wand trifft. Dann schaltet er in den Wall-Tracing-Modus, in welchem der Held du Wand entlang läuft. Anders gesagt, Wenn der Held nach Rechts ( oder wahlweise auch Links ( Übrigens vom Helden aus) ) kann, geht er nach Rechts. Geht das nicht, dann geradeaus. Geht das auch nicht, dann Links, und ansonsten zurück.
Nun ist die Schwierigkeit daran, wann "Stop" zu sagen. Wann soll der Held aufhören, sich an der Wand "entlang zu tasten"? Die Antwort ist eigentlich ganz einfach:
Man zieht eine direkte Luftlinie von Start- zu Zielpunkt. Passiert der Held nun diese Linie im Wall-Trace Modus, stoppt er diesen und versucht wieder geradeaus zum Ziel zu gelangen. Das ist zwar ganz nett, sieht aber zum Teil unschön aus.
Manchmal ist es besser, eine Luftline von der aktuellen Position zu "zeichnen" und zu schauen, ob diese Linie begehbar, also sichtkontakt zum Ziel besteht. Diese Linie wird auch Libe-of-Sight genannt.
Hier mal ein Bild zum besseren Verständnis:
Das Problem ist jetzt, dass ich nicht weiß, wie ich das umsetzen soll :/
Aufjedenfall istdie Luftline erstmal wichtiger als die LoS!
PS: Mir ist grad eingefallen, dass man den Weg vorberechnen könnte und dabei Breadcrumbing benutzen könnte. Dadurch ließen sich solche unschönen Wege vermeiden.
PPS: Hier noch ein Artikel dazu: hier