2016-04-29 32 views
0

我目前正在製作一個RTS遊戲,我需要一種方法來計算連續2d飛機上的兩個點之間的最短路徑,其中存在某些障礙物。連續搜索空間的路徑算法?

我有一個開始位置,一個結束位置和一個可以測試位置是否有效的函數。我需要一種算法,返回一系列要移動的點以便到達目的地。

我所知道的大多數路徑算法(如A *和IDA *)都需要離散化的搜索空間。我會自己將飛機劃分成一個網格,但我擔心這會導致沿對角線移動時看起來非常不自然的之字形圖案。有沒有辦法來緩解這個問題,或者我可以使用不同的路徑算法?它甚至不需要找到絕對的最短路徑,只是一條有意義的路徑。

+1

也許你會在gamedev.SE找到更好的解決方案。到目前爲止,我看到的每個實現(並不是很多)都會在空間中放置任意「節點」,使其離散化。如果你在地形和節點位置上很聰明(而且很慷慨),它看起來有點自然。 – Mephy

+0

你想要的是一個導航網格,並使用A *(或類似的,所有的工作)。有許多方法可以實現這一目標,從手工創建到全自動解決方案 - 所有這些方法都太多,無法用這種格式詳細描述。但網上有很多文章。爲什麼不能使用Unity內建的導航解決方案? – yes

回答

1

一種方法可能是通過僅考慮刨削有趣的點(例如障礙邊界上的點)來離散搜索空間,例如僅限於邊界框的角點,然後使用您已知的任何算法。

另一種選擇是在網格上計算並平滑網格上找到的最佳路徑。