RTS游戲核心技術(shù)如何實(shí)現(xiàn)多元控制
之前我也寫過關(guān)于RTS相關(guān)的文章,我記得上一篇貌似寫的是如何創(chuàng)建建筑物。今天這篇是如何實(shí)現(xiàn)多元控制。首先來說個(gè)點(diǎn)。這里的多元,沒有其他的意思,打個(gè)比方,就是控制多個(gè)小兵一樣的意思,這樣子。奈何語文不是很好。理解理解哈。為什么要寫這篇文章呢?其實(shí)RTS游戲雖然沒有像Moba游戲,RPG,F(xiàn)PS游戲那么火,但是它也是非常有意思的一個(gè)類型了。之前這些游戲沒火的時(shí)候,它的地位就體現(xiàn)出來了。而且RTS貌似大部分都是單機(jī)游戲。比如紅警啊,冰封王座啊這些。之前都是非常火的,只要是玩單機(jī)的,基本都知道這款游戲。為什么會(huì)火呢,離不開這個(gè)游戲的玩法。拿冰封王座來說,你隨便進(jìn)入一個(gè)地圖,然后就是選擇種族,然后開始對(duì)戰(zhàn)(電腦局域網(wǎng)都可以)。你可以建造祭壇來創(chuàng)建英雄,建造兵營來生產(chǎn)小兵,然后控制小兵和英雄一起出佂。很有意思的玩法,此刻你就是征戰(zhàn)沙場(chǎng)的將軍!OK,問題來了,它是怎么控制小兵和英雄一起行動(dòng)的呢?我們?cè)賣nity中能否實(shí)現(xiàn)這樣的功能呢?主題來了,老規(guī)矩,上效果圖。

這里3個(gè)cube被我選中,我鼠標(biāo)右鍵了一下右下角的plane,然后他們開始移動(dòng)起來了,顏色的話,也是選中后出現(xiàn)的,原來是白色的。模型我就沒用高級(jí)的了。要知道代碼才是游戲的靈魂,模型只是好看的皮囊。哈哈。
好了,不廢話了,先說需求,因?yàn)橛螒蛑惺鞘髽?biāo)拖出一定范圍,然后范圍內(nèi)的小兵都會(huì)被選中。所以我這里也是這樣的功能。
那么這個(gè)原理是什么呢?我這里的做法是:記錄鼠標(biāo)的位置,然后把它轉(zhuǎn)換成世界坐標(biāo),然后你會(huì)得到至少兩個(gè)點(diǎn),一個(gè)是第一次按下的點(diǎn),第二次是鼠標(biāo)抬起的點(diǎn),然后這就夠了,我們利用這兩個(gè)點(diǎn)來創(chuàng)建一個(gè)碰撞區(qū)域來,然后在這個(gè)區(qū)域的所有元素,都會(huì)被放入一個(gè)待控制列表,隨后就簡(jiǎn)單了,控制他們唄。嗯,說起來簡(jiǎn)單,做起來可不是這么容易的。當(dāng)然如果你理解了,那么就特別簡(jiǎn)單,因?yàn)樗鼪]什么繞的,都是直來直去的原理。原理說完了,上代碼了,大家湊合著看吧,看不懂就私我拿源碼demo。


這里為了方便理解,我用Gizmose這個(gè)類來把模擬鼠標(biāo)選擇區(qū)域。除此之外,它沒有任何作用。好了,本次的內(nèi)容就到這里了