從A*到Navmesh都是完備的尋路方案,能滿足任意距離的路徑搜索。它們都需要根據場景預先生成相關數據(A*是規整的2D格子數據,Navmesh則是mesh數據),在場景尺寸確定的情況下,Navmesh算法的網格數會隨障礙的復雜程度改變,而A*是固定的。就時空復雜度而言,通常情況下Navmesh要優于A*,但一些優化的變種A*算法(如:Hierarchy A*)在長距離尋路上要優于Navmesh。然而對于動態改變的場景障礙,在使用以上兩種算法時都會有性能和設計上的限制。在實際項目中,我們通常將戰斗約束在一定區域內,而且這些區域有可能是諸如移動平臺之類的,此時A*和Navmesh可能會面臨無法使用的境地。下面這個方案是在洗澡時突然想到的,確切點應該稱之為避障算法,因為它源自之前做智能避障小車時的經驗。
設,角色到目標點的方向向量為D0,投射線長度為L,探測間隙角為θ,N = 180 / θ,算法流程如下:

算法通過優先搜索目標方向左右無障礙空間,減少檢測次數,通過設置θ和L可以控制檢測精度和范圍。此外,設置合適的Collision Matrix和檢測頻率可以約束RayCast的性能開銷。