在unity中卤橄,通常會(huì)使用導(dǎo)航網(wǎng)格(Navigation)做尋路乳附,但有時(shí)也會(huì)對(duì)場(chǎng)景直接劃分格子都毒,并自己實(shí)現(xiàn)A*算法
那他們之間的區(qū)別是啥呢色罚?
問(wèn)題:
角色移動(dòng)的時(shí)候,通常不是在網(wǎng)格上一格格走
因此在非SGL游戲中账劲,會(huì)采用 尋路結(jié)點(diǎn) 或 導(dǎo)航網(wǎng)格 的形式
1.尋路結(jié)點(diǎn)
是關(guān)卡設(shè)計(jì)師在游戲世界中拜訪的角色可到達(dá)的位置
這些點(diǎn)會(huì)被作為圖的結(jié)點(diǎn)載入內(nèi)存戳护,邊則通過(guò)點(diǎn)與點(diǎn)之間的組合自動(dòng)生成
最大的問(wèn)題:
在于角色只能在結(jié)點(diǎn)的邊緣進(jìn)行移動(dòng),地圖上會(huì)有很多不能走的鏤空區(qū)域
2.導(dǎo)航網(wǎng)格
可以解決上面的問(wèn)題
通過(guò)凸多邊形來(lái)表示節(jié)點(diǎn)瀑焦,鄰近節(jié)點(diǎn)的就是相鄰的凸多邊形
一般形況下腌且,用遠(yuǎn)小于尋路結(jié)點(diǎn)數(shù)量的凸多邊形就可以將游戲世界區(qū)域表示出來(lái)
由于封閉區(qū)域可以自由行走,返回的路徑會(huì)更加自然
算法:
如果兩點(diǎn)在相同的三角形中榛瓮,直接走過(guò)去即可
如果兩點(diǎn)任何一點(diǎn)不在任何三角形內(nèi)铺董,就需要做不可達(dá)判斷
AStar是啟發(fā)式優(yōu)化尋路算法的統(tǒng)稱,導(dǎo)航網(wǎng)格其實(shí)與它并不在同一層級(jí)
無(wú)論使用凸多邊形還是網(wǎng)格禀晓,說(shuō)到底都是對(duì)地圖信息的一種描述精续,拓?fù)湫畔⒅螅?strong>都可以通過(guò)AStar來(lái)實(shí)現(xiàn)