unity干貨分享:雷霆戰(zhàn)機(jī)游戲的制作
用unity制作2D游戲雷霆戰(zhàn)機(jī)還是很簡(jiǎn)單的,這也是學(xué)習(xí)unity開(kāi)發(fā)練手的好項(xiàng)目之一了。因?yàn)樗皇呛茈y,而且涉及到的技術(shù)點(diǎn)也還有蠻多。而且他也是非常經(jīng)典的游戲了。
加入我的游戲開(kāi)發(fā)交流群,
給你分享更多游戲源碼及其他學(xué)習(xí)素材
我這里做了一個(gè)雷霆戰(zhàn)機(jī)來(lái)分享一下。功能包括子彈子彈發(fā)射,大范圍發(fā)散子彈發(fā)射,追蹤導(dǎo)彈,激光炮等。哦對(duì)了,還有對(duì)象池技術(shù)。
在這里我會(huì)詳細(xì)的說(shuō)下我的做法,就激光炮有點(diǎn)小難度,其他的應(yīng)該看下就能懂了。這里先看下效果圖。

可以從圖中看到我們有激光炮,追蹤子彈,普通子彈截圖的時(shí)候沒(méi)有到發(fā)射時(shí)間,所以沒(méi)發(fā)出來(lái),大范圍的子彈也有,這里沒(méi)有用。這些效果是怎么做的呢。接下來(lái)慢慢看下。
這里不講對(duì)象池,我之前專(zhuān)門(mén)講過(guò)的,可以去看看我以前的文章。首先我們來(lái)講下這個(gè)追蹤導(dǎo)彈的做法,也是比較簡(jiǎn)單的。我們知道既然是追蹤導(dǎo)彈,所以它會(huì)每時(shí)每刻都朝著敵機(jī)過(guò)去,所以我們就必須要得到子彈和敵機(jī)每時(shí)每刻的角度。
敵機(jī)可能有很多在同一時(shí)間出現(xiàn),我們?cè)撟屗氛l(shuí)呢?這個(gè)就看你自己了,反正是你自己寫(xiě)邏輯,你想怎么做就怎么做,我這里就是隨機(jī)追一個(gè),如果正在追的那個(gè)敵機(jī)沒(méi)了,那么子彈自己爆炸。這里給出追蹤導(dǎo)彈代碼:


第一個(gè)函數(shù)是在發(fā)射子彈的控制腳本中的函數(shù),第二個(gè)是子彈自己的腳本中,很簡(jiǎn)單,每時(shí)每刻記錄子彈和目標(biāo)的角度,然后把子彈的歐拉角的值用這個(gè)角度,但是要注意角度方向,所以我這里用比較X值的方法做的。
因?yàn)槭浅R?guī)2D游戲,所以就是豎直平面內(nèi)。是不是很簡(jiǎn)單,然后我們來(lái)說(shuō)下這個(gè)激光炮。這個(gè)激光炮就有點(diǎn)意思了。原理是這樣的,我們從發(fā)射口的左邊發(fā)射一個(gè)子彈(空物體就夠了),然后讓它進(jìn)行2D射線檢測(cè),方向朝它的對(duì)面(也就是發(fā)射口的右邊),他們是對(duì)稱的。
然后由于射線是看不見(jiàn)的,為了用戶體驗(yàn)十足,我們把這個(gè)射線模擬出來(lái),也就是激光線要繪制出來(lái),就用線渲染器來(lái)操作就可以了。代碼截圖如下
