Hierzu habe ich folgende Überlegung gehabt. Die Wegstrecke teile ich in gleich große Abschnitte. Die Abschnitte werden zunächst in Richtung zum Ziel hin geprüft. Befindet sich kein Gewässer im Weg dann soll der Weg in Richtung Ziel führen. Befindet sich aber Wasser im Weg wird von dem Vektor aus, der zum Ziel führt, in gleichmäßig Kreisförmig angeordneten Schritten in eine Richtung geprüft.
Zum Beispiel: Wenn wir zunächst 20 Meter gerade aus gehen und merken es kommt ein See. Dann drehen wir uns um 12° nach rechts und sehen, dass da ist immer noch Wasser im Weg ist. Dann drehen wir uns um weitere 12° nach rechts, also insgesamt 24°, und da ist kein Wasser im Weg. Die nächsten 20 Meter gehen wir also in diese Richtung. Dann wird erneut in Richtung Ziel geprüft...
Generell ist diese Art der Prüfung kein Problem. Ich benutze um den Kreis zu berechnen, in dessen Richtung die Strecke Abschnittsweise geprüft werden soll die Formel aus dem Beispielcode von PB in "Math". Um das ganze nicht durchgehend im Kreis zu prüfen habe ich es in 20 Abschnitte unterteilt.
Code: Alles auswählen
For y = 1 To 20
ZielX = PosX+cos(0.314*y)*#PRUEFUNGSLAENGE-sin(0.314*y)*#PRUEFUNGSLAENGE
ZielZ = PosZ+cos(0.314*y)*#PRUEFUNGSLAENGE-sin(0.314*y)*#PRUEFUNGSLAENGE
;Wenn zwischen dem neuen Ziel und der Position kein Wasser ist unterbreche die Schleife, wenn doch dann mache weiter
Next
Code: Alles auswählen
For y = 1 To 20
ZielX = PosX+cos(0.314*y+Zusatzwinkel)*#PRUEFUNGSLAENGE-sin(0.314*y+Zusatzwinke)*#PRUEFUNGSLAENGE
ZielZ = PosZ+cos(0.314*y+Zusatzwinkel)*#PRUEFUNGSLAENGE-sin(0.314*y+Zusatzwinke)*#PRUEFUNGSLAENGE
;Wenn zwischen dem neuen Ziel und der Position kein Wasser ist unterbreche die Schleife, wenn doch dann mache weiter
Next
Ich bin sehr schlecht im erklären, hoffe aber das Problem einigen etwas näher gebracht zu haben und bitte euch um Hilfe.