Guten Abend,
Update! - 18.05.2017 -
Knapp 3 Jahre nach dem Release kommt endlich die Veranschaulichung sowie den Fix der UDF.
Die UDF unterstützt mittlerweile vernünftiges Error-Handling und kommt mit einer Funktionsdokumentation daher.
Ich möchte hier ein Skript vorstellen welches mittels A*-Algorithmus (A-Star) den kürzesten Weg vom Start- bis zum Endpunkt findet.
Anleitungen zum A*-Algorithmus gibt es viele im Internet, einfach mal nachschauen.
Die .mesh-Datei von der ihr die Koordinaten und Wegpunkte bezieht muss wie folgt aufgebaut sein.
x;y;verbindung_zum_wp;verbindung_zum_wp;...
a;b;verbindung_zum_wp;verbindung_zum_wp;...
m;n;verbindung_zum_wp;verbindung_zum_wp;...
Es sieht vielleicht unverständlich aus aber hier ist eine Beispieldatei (Die Verbindung zu einem Wegpunkt wird mittels Zeile dargestellt).
Ich habe einen Visualizer gebaut der den Graphen anzeigt und einen gewünschten Pfad berechnet.
Das Netz ist allerdings gestreckt, damit es in das schwarze Quadrat in der GUI passt.
[Blockierte Grafik: http://i.imgur.com/LT5nlGV.png]
_NavMesh_GetPathDistance($aPath, $aMesh)
_NavMesh_GetPath($iStartWaypoint, $iEndWaypoint, $aMesh[, $bReturnWaypoints = True])
_NavMesh_ListWaypointsByWaypoint($iWaypoint, $aMesh)
_NavMesh_GetCoordinatesByWaypoint($iWaypoint, $aMesh)
_NavMesh_GetWaypointByCoordinates($iPositionX, $iPositionY, $aMesh)
_NavMesh_GetLowestInList($aList)
_NavMesh_GetNearestWaypoint($iX1, $iY1, $aMesh)
_NavMesh_GetDistance($iX1, $iY1, $iX2, $iY2)
_NavMesh_LoadMeshFromFile($sFilePath)
Wichtig! Die UDF arbeitet mit gerichteten Graphen!
Wenn ihr überprüfen wollt, ob euer Netz ein gerichteter Graph ist, nutzt die Mesh Checker.au3!
Wichtig! Die UDF arbeitet intern mit Indizes also sind im Netz eingetragene Wegpunkte immer um eins subtrahiert. Wenn ihr den Pfad von 1 zu 5 berechnen wollt, dann müsst ihr die Wegpunkte 0 und 4 nehmen. Der Grund warum ich in den Dateien es bei 1 anfangen lasse und im Script mit 0 arbeite ist der, dass man im Editor wenn man das Netz eintippt immer bei Zeile 1 anfängt und es einfach nur ekelhaft ist, wenn man beim Tippen immer eins abziehen oder draufaddieren muss!
Viel Spaß damit! Kritik und Lob sind gerne gesehen!
Bisherige Downloads (alte Versionen): 462