Marcel Geschrieben 8. Juli 2017 Melden Share Geschrieben 8. Juli 2017 Hallo, ich will eine Car A* programmieren und ich muss hierfür die Straße trennen, doch mir fallen keine Möglichkeit ein. Zur Info mein Pathfinding-Script erstellt ein Grid und berechnet sich dann den Weg. Vielen Dank im Vorraus Marcel Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 8. Juli 2017 Melden Share Geschrieben 8. Juli 2017 Was meinst du mit Straße trennen? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 8. Juli 2017 Melden Share Geschrieben 8. Juli 2017 Meinst du eine gezeichnete Straße auf einem Unity Terrain? Dafür müsstest du die Positionen der (Strassen)Textur aus der Splatmap des Terrains auslesen (siehe terrainData.GetAlphamaps). Abschließend kann man nun einen 2D-Grid über die Flächen dieser Textur legen auf welchem dann der A*-Algo arbeiten kann. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Marcel Geschrieben 9. Juli 2017 Autor Melden Share Geschrieben 9. Juli 2017 Wie man im ersten Bild sieht, steht das Auto jetzt auf der rechten Seite, jetzt beachtet aber mein Pathfining Script nicht auf welcher Straßenseite das Auto fahren soll Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 9. Juli 2017 Melden Share Geschrieben 9. Juli 2017 Ich kenne dein Pathfindingkript (Grid) nicht und auch nicht genau die verwendete Technik und was es alles für Möglichkeiten bietet. Eventuell wäre eine Möglichkeit deine Straße in mehrere "Spuren" aufzuteilen, .d.h. auf der Straße würden dann 2 Grids liegen, ein Grid für die linke Spur und ein Grid für die rechte Spur. Wäre dies keine Lösung, dann müsstest du die Spur des Autos über die Positionen des Autos auf dem Grid selbst festlegen. Dafür müsstet du genau die Position und die Ränder deines Grids kennen, damit du die Positionen des Autos so setzen kannst, das diese beispielsweise am linken oder am rechten Rand des Grids liegen. Zudem müsstest du die neue Position des Autos regelmäßig neu setzen (d.h. in einem festgelegten Intervall). Ansonsten besteht die Gefahr, daß das Auto abkürzt und die Spur verlässt. Das Problem hierbei ist das Festlegen dieser Wegpunkte. Daher ist die klar bessere Lösung die Straße über 2 Grids - die über der eigentlichen Straße liegen - zu zerteilen. Bei einem Spurwechsel müsste dann von einem Grid zum anderen gewechselt werden. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Life Is Good Geschrieben 9. Juli 2017 Melden Share Geschrieben 9. Juli 2017 Du könntest die Zellen auf der anderen Straßen Seite als nicht befahrbar markieren, idealerweise vor Spielstart. Ansonsten ist A* vermutlich nicht so wirklich die passendste Lösung. Flow Fields würden vielleicht ein besseres Ergebnis liefern. Dann wäre die Straßenseite in eigener Fahrtrichtung der optimale Weg, während die andere Seite zwar nicht unpassierbar, aber ineffizient ist. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 9. Juli 2017 Melden Share Geschrieben 9. Juli 2017 Ja, zumindest beim Unity Navmesh kann man ja auch Kosten für "Areas" angeben. Am Beispiel einer Straße würde man hier den Mesh der Straße in 2 Meshes zerteilen (linke und rechte Spur) und nach dem Erstellen des Unity-Navmeshgrids die Gegenseite der Straße entweder als "non Walkable" oder als Gebiet mit hohen Kosten markieren. Ob die Straße dann später tatsächlich aus 2 Meshes besteht ist denke ich egal. Problem ist nur die Zerteilung der Straße in 2 Meshes vor dem Navmesh-"Baken". Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.