RTS游戲建筑放置機(jī)制
在RTS游戲中,典型的就是魔獸世界冰封王座,還有紅警等比較經(jīng)典的。那么我們?cè)谟螒蛑锌梢詣?chuàng)建英雄祭壇來(lái)創(chuàng)建英雄,然后建造兵營(yíng)來(lái)創(chuàng)建小兵等。但是我們建造建筑物的時(shí)候,有些地形不能建造,有些已經(jīng)建造過的地方上也不能再建造其他的建筑物。而且能夠直觀的顯示出來(lái),哪些地方可以建造,哪些地方不能建造。這就有很好的游戲體驗(yàn)感了。這里我也做了一個(gè)這樣的建筑物放置的Demo,先來(lái)看看效果吧

我們從圖中就可以看到這個(gè)效果非常的不錯(cuò)了。首先創(chuàng)建建筑的時(shí)候,如果當(dāng)前地形沒有已經(jīng)生成的建筑,那么就可以進(jìn)行創(chuàng)建,如果當(dāng)前選中的區(qū)域有其他的建筑存在,就顯示范圍,看看能不能在它附近創(chuàng)建,然后不能創(chuàng)建的地方我們顯示紅色,可以創(chuàng)建的地方顯示綠色。這個(gè)效果就出來(lái)了。那么是怎么做的呢?接下來(lái)我們相信的講解下。
首先創(chuàng)建建筑這方面的就很簡(jiǎn)單,沒什么難度,不多說(shuō)。主要說(shuō)創(chuàng)建建筑時(shí)的細(xì)節(jié)顯示。原理也是比較容易理解。首先我們把整個(gè)地形用一個(gè)二維坐標(biāo)系模擬出來(lái)。因?yàn)椴恍枰叨龋灾恍枰?個(gè)坐標(biāo)就可以了。分別是X和Z。我這里用Gizmos繪制出來(lái)。

然后我們就通過鼠標(biāo)點(diǎn)的位置,再和整個(gè)模擬地圖對(duì)應(yīng)點(diǎn)的位置進(jìn)行對(duì)比,如果這個(gè)位置附近有建筑那么就會(huì)顯示紅色,同時(shí)按鍵不能進(jìn)行創(chuàng)建建筑,如果這個(gè)位置附近沒有建筑就會(huì)顯示綠色,也能創(chuàng)建。那么這個(gè)附近是怎么算的呢?這個(gè)就需要提前設(shè)置好你的建筑類型了。在這里我畫個(gè)圖來(lái)說(shuō)


靈魂畫手,不要介意。我們以這個(gè)建筑為例,這個(gè)建筑我把它認(rèn)為是占地9個(gè)單位的。然后把它勾勒出來(lái)。如上圖手繪。黑色是這個(gè)建筑,然后把它分為9塊,然后我們第一次創(chuàng)建是覺對(duì)可以創(chuàng)建的,創(chuàng)建好了以后,綠色部分就不現(xiàn)實(shí)了,但是它的占地區(qū)域我已經(jīng)記錄在腳本里面了,第二次創(chuàng)建新的建筑時(shí),如果在它旁邊進(jìn)行創(chuàng)建,那么就會(huì)和它上面的腳本里面的占地?cái)?shù)據(jù)進(jìn)行對(duì)比,如果都在同一地點(diǎn),就會(huì)顯示紅色,否則就是綠色。而且是9個(gè)區(qū)域逐一檢測(cè)。有多少就檢測(cè)多少。最終我們就可以實(shí)現(xiàn)想要的效果了。這里最后把核心的代碼附上


代碼很容易理解,就是對(duì)比坐標(biāo)值就行了。這里只截圖了關(guān)鍵代碼,其他的無(wú)關(guān)緊要的沒有截圖。篇幅有限。需要Demo的朋友可以來(lái)找我