文/圖、小邱老師
本文轉載自聯成電腦技術論壇,歡迎點選此連結,前往小邱老師版與講師互動。
大家好,在橫向射擊(一)與(二)教學,製作了人物的操控與子彈的射擊,與敵人產生,這次要製作玩家的生命與關卡最後要出現BOSS魔王。
若沒有觀看前面教學,請由以下連結觀看:
橫向射擊(一) http://lccnetvip.pixnet.net/blog/post/43486032
橫向射擊(二) http://lccnetvip.pixnet.net/blog/post/43486068
心型的生命值
由功能表GameObject→UI→建立Image,並將心型圖片拖曳到Source Image的欄位,移動到螢幕左上角,複製五顆心,代表有五次機會。
在正中間再放置GameOver的圖片,並將屬性面板最上方的打勾取消,使圖片一開始不顯示。
建立新的語法life,拖曳給Canvas,在語法中建立lifeCount函數,設定生命值會一直減少,並在生命值歸零時,顯示GameOver的圖片。Update函數在遊戲中會持續執行,自行建立的lifeCount函數則不會,因此之後還要再呼叫此函數。
建立新語法swat_enemy,拖曳給敵人,只要敵人碰到玩家,呼叫lifeCount函數,生命值就會減少。
玩家的標籤要選擇Player。
由於語法使用Trigger來偵測,玩家的is Trigger要勾選。
BOSS魔王
將原本敵人放大後,重新命名為BOSS,擺到關卡最後面,可將BOSS屬性面板的is Trigger打勾,避免與一般敵人相撞。
在boss下層加上Canvas,要移動Canvas,必須把屬性面板的Render Mode設定為World Space,才能任意移動。
由功能表GameObject→UI→建立三個Image,分別為血槽、血量、魔王圖示,將血量與魔王圖示拖曳至血槽的下層。血槽與血量必須大小相等,位置相同,兩個圖片是重疊的。
血量的屬性面板,ImageType設定為Filled填滿,Fill Method填滿方式為Horizontal水平,Fill Amount是填滿值。
建立新語法,宣告Hp來控制Fill Amount的數值,之後只需要減少Hp,就可以減少Fill Amount值。
此語法拖曳給血槽物件,並將血量物件拖曳到Hpbar欄位,記得設定Max Hp最大生命值,與Hp目前生命值。
修改bullet子彈的語法,使子彈碰觸到魔王,若魔王生命大於0,則生命值減少1,若魔王生命歸零,則魔王被消滅。
也可以幫魔王加上一些酷炫的特效。
BOSS魔王的攻擊
建立新語法bossBullet,控制子彈,語法中建立一move函數使子彈往下降落,並用Invoke一秒後呼叫move函數,使子彈會停留一下才攻擊,給玩家緩衝的時間。
並運用OnTriggerEnter語法,使子彈碰觸到玩家,呼叫lifeCount函數,使生命值減少。且子彈碰觸到bullet_destroy標籤的物件,子彈會消滅,才不會無限增值。
找一個特效當作子彈,加上bossBullet語法,並將子彈的is Trigger選項打勾。
在地面下方,建立一個方塊,並將tag標籤設定為bullet_destroy,使子彈降落並撞到方塊時,會被消滅。
建立新語法boss_attack拖曳給魔王,在語法中,建立新boss_att 函數,指定子彈位置為一個Range範圍,會隨機在此範圍中產生。並利用Invoke呼叫boss_att 函數,Invoke的呼叫時間也是設定一個範圍,不定時呼叫子彈。
子彈須為prefab(預製物),將子彈拖曳到語法的boss_bullet 欄位,並設定time與Random time(時間與隨機時間)。
需要特別注意,每個人場景物件位置不同,圖中的XYZ軸數值僅供參考。
由於關卡最後才要打魔王,因此boss_attack語法前面的打勾取消,使遊戲一開始魔王不會攻擊,不會浪費資源。
在魔王前方建立一個方塊,屬性面板的Mesh Renderer元件刪除,is Trigger選項打勾,此方塊要用來啟動魔王攻擊。
建立新的語法boss_wall,使玩家碰觸到方塊時,boss_attack會啟動,魔王就會開始子彈攻擊。
先不談剩下的小細節與遊戲優化,至此已完成所有的操作,歡迎大家一起嘗試製作看看這個橫向射擊遊戲喔!保持興趣是最大的進步動力,可以加進一些喜愛的元素,創作自己的遊戲喔!
延伸閱讀
聯成電腦小邱老師專欄:unity常用技巧-主角落入陷阱變色介紹
留言列表