關(guān)于AI尋路的一點(diǎn)想法
先說目前的進(jìn)度,現(xiàn)在已經(jīng)可以實(shí)現(xiàn)全自動(dòng)索敵+移動(dòng)+攻擊,但是我不知道如何處理障礙物,因?yàn)槲蚁胱龅挠螒蚴穷愃瓢岛谄茐纳翊竺鼐尺@類的隨機(jī)地圖+隨機(jī)敵人,然后玩家就殺殺殺,爽就完了。并不是很適合做NavMesh。
從一開始我就知道AI尋路不好弄,這不是簡單的你跑到某點(diǎn),因?yàn)檫@是FPS,玩家一般都在不停地高速移動(dòng),然后各種躲掩體。 那么我,不停地重新算最佳路徑,顯然是對資源的浪費(fèi)。
但不管怎么弄,AI還是要先去讀地圖數(shù)據(jù),這個(gè)是最最基礎(chǔ)的。否則一切都免談,我看各種插件,他們都是要掃描地圖的,想要效果好,速度都慢,,然后我去翻了一下相關(guān)的技術(shù)貼,就是那些算法是怎么樣的思路,看了兩秒我就放棄了。顯然我學(xué)不來。(是 google的技術(shù),我看不懂 哈哈)
我打算換個(gè)層次了,讓機(jī)器人嘗試去隨便找找,限定時(shí)間內(nèi)還找不到player,就直接飛起來,如果這還不行,那活該機(jī)器人摸不到你,對不?
于是 產(chǎn)生了如下思路
機(jī)器人用射線掃描周圍,掃到player,就開始追殺,如果距離合適就開槍
追殺過程中,player 大概率會躲進(jìn)掩體,而我的游戲邏輯中,子彈是不允許穿墻的,所以機(jī)器人被迫要擁有尋路功能
由于決定了機(jī)器人在一段時(shí)間后還找不到人就能直接飛起來,所以尋路AI 可以極大地簡化,我只需要掃描前方的物體是不是障礙物就行了,如果是 隨機(jī)轉(zhuǎn)左或者轉(zhuǎn)右,走幾步,重復(fù)找人的邏輯。
飛起來以后就簡單了,直接從高空向player沖過去,進(jìn)入射程就開槍,如果這都搞不定,那也是player的本事了。
那么就這樣吧,unity 的學(xué)習(xí)之旅 應(yīng)該也差不多了, UE5已經(jīng)安裝好,只要工作別太忙就能搞好。