塔防游戲——攻擊方設(shè)計

塔防游戲相信大家并不陌生,幾個主要元素如下:

1、敵方士兵

2、我方防御塔

3、我方主城

emmmmmmm好像就沒了。

人越狠,話越不多。不多說,接下來我們一步步把這幾個功能做完。

素材準(zhǔn)備:

網(wǎng)上隨便找一些資源就行,不一定要和我一樣。這里再次強調(diào):

網(wǎng)上獲取的資源一定不能用作商業(yè)用途?。。。。?!

就本工程而言,資源有一下幾種:

敵人2個,分別擁有移動,攻擊,待機,死亡四種動畫

防御塔3個,擁有待機,攻擊兩種動畫

人形防御塔可還行

主城1個,主地形1組(內(nèi)含各種雜草亂石)


敵人地形(敵人能用來走的路)1種,防御塔地形(防御塔能放置的地方)1種,箭矢1個

場景搭建:

先從簡單的功能做起:讓敵人從生成點走到主城,看見主城就攻擊。

搭建一個簡單場景:


為了檢測敵人尋路,最好是能轉(zhuǎn)彎的道路

敵人和主城有一個都有血量的屬性,都會被攻擊,這里為它們做能顯示在頭上的血條。

以主城為例,在主城的子節(jié)點層創(chuàng)建一個Sprite做黃血條,設(shè)為黃色,取名“BloodStrip”,調(diào)整好大?。?/p>

然后在BloodStrip的子節(jié)點層創(chuàng)建一個空物體,取名“Hp”,在Hp的子節(jié)點層再創(chuàng)建一個Sprite做紅血條,名字“Red”,設(shè)為紅色,大小和黃血條一樣,把黃血色覆蓋:


接下來就移動紅血條位置,讓它左邊邊緣與父物體Hp的Y軸重合:


然后再將Hp往右移動,讓Y軸與黃血條左邊緣重合(紅血條剛好覆蓋黃血條):


這樣我們只需要設(shè)置H的X軸大小,就可以控制紅血條長度了

***這里請初學(xué)者注意,如果你選取的紅血條圖片資源不是純色的、是有其他花紋的,則不能用這個方法。原因很簡單,這種方法會把花紋拉長或壓扁。大家可以下來想一下:這種情況下應(yīng)該怎樣來設(shè)置?

后面在代碼中只需要將當(dāng)前血量與總血量的比值賦給Hp的X軸,就可以將血量信息顯示在界面上了。敵人血條做法一樣。

做好后讓BloodStrip處于禁用狀態(tài),受傷后才顯示(這是游戲UI顯示的一個約定俗成的規(guī)則)。

代碼編寫:

為主城與敵人創(chuàng)建一個基類腳本Character:

創(chuàng)建主調(diào)腳本:用于游戲初始化和記錄游戲死亡,掛在一個場景物體上:

創(chuàng)建主城腳本,繼承自Character腳本:

敵人的腳本也繼承自Charater,除了受傷和死亡之外還能攻擊與移動:

重點在移動方法上。因為敵人的移動帶有尋路功能,這里沒有采取Unity自帶的NavMeshAgent,而是用腳本來實現(xiàn),主要思路仿照盲人的行進方式,利用射線充當(dāng)導(dǎo)盲棍,發(fā)現(xiàn)前方道路中斷再從兩邊找新的行進路線:

拐杖就是射線

要利用好這個思路,場景中道路的搭建也有一定要求,道路都要掛上MeshCollider組件,方便射線檢測。


所有道路的Z軸指向路線前進方向

道路的物體層設(shè)置為“Way”,主城也掛上碰撞器,物體層設(shè)為“City”。


在敵人模型身上創(chuàng)建一個空物體為眼睛,取名為“Eye”,主要作用是從此為射線起始點,位置合適即可,注意,因為所有敵人都用的相同腳本,所以所有敵人的眼睛高度距離地面相同:


正面看這些模型真特么驚悚

當(dāng)然每個敵人也請掛上碰撞器和剛體以及Animator組件:


創(chuàng)建一個敵人狀態(tài)機:

重寫初始化方法:

編寫移動方法,并在Update中調(diào)用:

暫時把初始化方法放在Start中調(diào)用(后面我們會在創(chuàng)建的時候初始化),然后設(shè)置好血量、視野、速度、傷害,主城也設(shè)置好血量:


先來看下尋路運行效果:

藍線檢測前方道路,紅圈檢測周圍道路

尋路沒有問題了,將攻擊動畫設(shè)為循環(huán)播放,然后將攻擊方法放入攻擊動畫事件中,敵人看到主城就會自動攻擊了:

敵人主要功能就已經(jīng)完成。現(xiàn)在我們來做敵人生成器。

塔防游戲的敵人生成方式一般都是比較有規(guī)律的,比如先生成一組a敵人,跟著生成一組b敵人,每組敵人的生成間隔也恒定(當(dāng)然,讀者也可以自己嘗試更豐富的出兵方法,比如讓“某些特定敵人的血量減到某個閾值”作為觸發(fā)條件等等):


為了生成方便,我們來做一個定時器,可以重復(fù)并規(guī)律地調(diào)用一個生成敵人方法:

把所有敵人放入一個路徑中,創(chuàng)建一個空物體做敵人生成器,放在敵人生成點,創(chuàng)建腳本掛上去:

做到這一步就可以像演示視頻中那樣點擊按鈕出兵了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 無盡之塔角色圖鑒1 無盡之塔角色圖鑒2 無盡之塔鏈接1 無盡之塔鏈接2 游戲更新頻繁,且本文由代碼自動生成,...
    z_fire閱讀 1,667評論 0 1
  • ----------------------- 頁面 1----------------------- 2013 ...
    長春傳齊3閱讀 5,404評論 0 1
  • 無盡之塔角色圖鑒1 無盡之塔角色圖鑒2 無盡之塔鏈接1 無盡之塔鏈接2 游戲更新頻繁,且本文由代碼自動生成,...
    z_fire閱讀 2,800評論 0 0
  • Unity3D塔防開發(fā)流程 配置環(huán)境及場景搭建 編程語言:C#,略懂些許設(shè)計模式,如果不了解設(shè)計模式,BUG Mo...
    Grape_葡萄閱讀 3,106評論 1 3
  • 前言 開發(fā)3D游戲聽起來門檻很高,但是Unity的出現(xiàn)讓門檻大大降低。開發(fā)聯(lián)網(wǎng)實時對戰(zhàn)的3D游戲門檻就更高,因為即...
    大王12閱讀 6,128評論 2 6

友情鏈接更多精彩內(nèi)容