UNITY.RPG游戲?qū)Ш骄W(wǎng)格尋路組件運(yùn)用與優(yōu)化
RPG/ MMORPG游戲動(dòng)態(tài)尋路指示標(biāo)
相信大家都玩過RPG或者M(jìn)MORPG類型的游戲,就算沒有玩過,也應(yīng)該見過別人玩,這種游戲其中就有一些尋路的模塊。比如新手指引任務(wù),你點(diǎn)擊了新手指引,然后就會(huì)自動(dòng)尋路過去,為了讓游戲更加有體驗(yàn)感,那么我們可以看到有尋路的指示標(biāo)會(huì)出現(xiàn),并且它會(huì)指引我們玩目的地走去。
而且你中途停下,或者去做其他事情,它還是會(huì)指示你往任務(wù)的目的地去,除非取消任務(wù)。并且隨著你的移動(dòng),你的位置發(fā)生變化,指示標(biāo)也會(huì)自動(dòng)的改變角度啊,距離啊這些。那么這就是RPG/MMORPG游戲非常有特色的一個(gè)功能了,這個(gè)功能應(yīng)該怎么做呢?用unity能做出來嗎?

我們今天就要在unity里面來實(shí)現(xiàn)這樣的一個(gè)功能。
這就是一個(gè)簡(jiǎn)單的尋路指示標(biāo)的demo,素材比較簡(jiǎn)陋,而且指示標(biāo)方向也有點(diǎn)問題,換個(gè)紋理就可以了,那么我們?cè)趺窗阉鼘?shí)現(xiàn)呢?先說下原理,再上代碼。

首先,搭建一個(gè)場(chǎng)景,這個(gè)就不說了,很簡(jiǎn)單。嗯,尋路指示標(biāo)的原理就是需要得到尋路起點(diǎn),然后得到終點(diǎn)。最后在這兩點(diǎn)之間來弄一些指示的地標(biāo),來讓玩家知道這是我們移動(dòng)的方向。這個(gè)的實(shí)現(xiàn)的方法也有多種。找到適合自己的就是最好的,哈哈。好了,首先手圖中的粉色的線條,很明顯,大部分朋友應(yīng)該能看出來,這是用unity的線渲染器組件(LineRender)來繪制的,那么這是怎么畫出來的呢。OK,我們知道unity尋路組件里面可以獲取你烘焙過后的地圖里你要導(dǎo)航的路徑點(diǎn),其中的一些關(guān)鍵的拐點(diǎn),都可以獲得,那么我們就可以用線渲染器來把它們繪制出來,這樣粉色的路徑路線就呈現(xiàn)在我們眼前了,關(guān)鍵代碼如下:

我這里用的是射線檢測(cè)來獲取目的地,然后用導(dǎo)航網(wǎng)格組件里的函數(shù)移動(dòng),那么如果我們的路徑點(diǎn)個(gè)數(shù)大于1個(gè),我們就開始來獲取所有的點(diǎn),再一一的連接起來。為什么可以這么做呢,因?yàn)榫€渲染器可以畫多條線,把他們連接起來。好了,這個(gè)粉色的路徑線搞定
然后我們?cè)僬f下比較難一些的指示標(biāo),這個(gè)其實(shí)也很簡(jiǎn)單。

然后把它渲染組件里的材質(zhì)里面的shader改成Mobile/Particals/Alpha Blending。這個(gè)就是Alpha通道的常規(guī)顏色混合,在這里不細(xì)說,選這個(gè)就對(duì)了。
OK,原理是怎么樣的呢?就是我們?cè)谖覀兊玫搅似瘘c(diǎn)和終點(diǎn)的距離后,我們就需要生成一個(gè)這樣的預(yù)制體,然后把這個(gè)距離給它的圖片的紋理的X和Y的比例,也就是Tiling屬性里面的值,根據(jù)自己實(shí)際的情況賦值即可,我這里是把距離賦值給Y,然后這個(gè)距離怎么得到的呢,方法很多種,
這里用的一手勾股定理

這個(gè)也不會(huì)的就去看看高中的數(shù)學(xué)吧。好了,再來說角度,這個(gè)稍微復(fù)雜一點(diǎn),不過也難不倒我們

這兩個(gè),我們就需要把指示標(biāo)畫出來了

關(guān)鍵的顯示代碼如上所示,其他的都很簡(jiǎn)單。
然后我們的需求就搞定了,大概就是這樣的一個(gè)操作過程,當(dāng)然這是一部分代碼,不能實(shí)現(xiàn)效果的,需要完整的代碼的朋友可以私信我哦,免費(fèi)給大家,同時(shí)這個(gè)方法并不是很簡(jiǎn)潔的,我這里還有更加優(yōu)化的方法