用Unity快速开发太空飞机大战游戏实战经验分享(上)
用unity動手先來試試一個簡單的太空飛機大戰吧。看官請繼續往下。。。
最終效果,可控制己方戰機,朝目標敵機發射子彈,打飛機~~~!伴隨想象,慢慢呈現這個太空飛機大戰游戲。
1、 新建打飛機unity工程,建好資源分類目錄,導入飛機FBX模型文件以及貼圖,射擊和爆炸等聲音文件等等。
?
2、 新建場景game.unity,下面大部分工作都在這個場景里完成!
3、我們想要游戲場景背景里顯示一個火星球和星空的效果,這樣更真實。新建一個平面體Plane作為火星背景模型;然后創建一個材質球命名為Background,指定好之前導入的火星貼圖文件。操作如下:
?
4、 好,上面都是一個個來選擇,來個拖動方式來進行一次關聯操作。Unity幾乎所有的關聯操作都可以通過拖動方式完成!現在準備設置平面體即我們的火星背景模型材質,選中剛建好的Background材質球拖放到火星模型上。如圖:
?
5、創建另一個平面體,放到火星后面,準備做一個星空的效果。同樣創建星空材質球設置好貼圖操作同上。然后將星空材質球拖到新的平面體。Ok,我們可以看到星空中的火星了。。。
?
6、 想讓星空在運行游戲時緩動起來,產生動畫效果,讓你感覺星動~
這里先不詳述UV動畫以及動畫制作過程。準備了個.anim動畫文件,選中星空模型添加animation組件設置下動畫文件為.anim文件,使星空有緩動效果。
?
7、上面步驟,已經將游戲需要模擬太空背景的效果處理差不多了,接下來需要調整試圖角度,我們需要從上向下展望火星和星空。我調整了下攝像機視角和視野大小。選中Main Camera,選擇GameObject里Align With View使攝像機視角與當前試圖一致。現在就可以看到太空的火星和星空了,如圖效果:
?
8、接下來,準備創建己方戰機了,這就是我們要控制的主角了。把準備好的主角戰機Fbx拖入場景里,調整下戰機朝向:
?
9、讓戰機動起來。這里我們主要用到的是Input包裝了輸入功能的類,包括了很多鍵盤、鼠標或觸控操作函數;Transform組件主要功能是和移動、旋轉、縮放游戲體有關的。
選中我的戰機模型,添加一個腳本給它,我們將在腳本里還需要做:
1.控制戰機上、下、左、右來移動,控制移動速度;
2.控制戰機發射子彈,以及子彈發射間隔;
3.控制戰機生命值,設置戰機爆炸聲音和爆炸效果等等。
添加腳本,選中戰機,將對應腳本拖到戰機上即可,如下:
?
10、創建子彈
子彈是游戲中需要重復使用的游戲體,需要創建prefab。
將子彈Fbx拖入場景里,新建一個子彈的prefab,選中Hierarchy子彈游戲體拖入prefab上,如圖示:
?
子彈主要是控制飛行、造成傷害值、自身生存時間。我們給子彈添加腳本
?
然后可刪除場景里的子彈。
11、讓我的戰機能發射子彈,設置Player腳本參數,rocket就是我們創建的子彈prefab,設置0.1s發射間隔,另外還給了一個戰機發射子彈的聲音,如下:
?
上面說道了聲音,凡是要發聲的物體,需要添加audio source這個組件!
12、子彈主要是飛行然后消失。手機靚號買號消失分兩種情況,一是碰撞了敵機,二是生存時間到了自動消失。這里提到碰撞和OnTriggerEnter事件,后面再說。腳本:
戰機的話主要是移動,輸入控制發射子彈,并伴隨射擊聲音,腳本如下:
?
這里Instantiate是unity中函數實例化,不是我們常用的new!!!
13、現在僅有了主角戰機、子彈,暫無其他交互了。運行中,我們可以看到實例化出來的子彈,以及其被delete的過程,截了一張運行時的圖,詳細如下:
?
14、好了,準備創建敵戰機了。敵機也需要重復使用,先創建敵機的prefab,給敵機增加控制腳本,如圖:
?
首先這種敵機我們不給其具有攻擊性,不讓其發射子彈,它就能移動,我方戰機可以發射子彈打掉它。先整個簡單點的敵機、簡單點交互哈!
15、上面有提到碰撞和OnTriggerEnter事件,現在處理打掉敵機就需要運用了。
給敵機增加Box Collider組件,它是立方體碰撞組件,選中trigger使其有觸發作用,簡單說這個就能使OnTriggerEnter有響應了。
?
給敵機增加剛體組件。所有參與物理計算的游戲體都需要有一個剛體才能正常工作!不選use Gravity使其不受重力影響,選中Is Kinematic使其運動不受物理模擬影響。(以上改動都會自動更新與prefab一致)
?
同樣,按上面所示給子彈、主角戰機也添加Box Collider組件、剛體。
16、設置好敵機、子彈、主角戰機的tag標志, 以下就是我們需要在各腳本OnTriggerEnter需要處理的邏輯!
敵機碰到子彈會損失生命直到為零就自動銷毀;敵機撞到主角戰機直接掛掉銷毀;
?
2.子彈碰到敵機就自動銷毀;
?
3.主角戰機碰到非自己射出的子彈就減少一條命,直到為零自動銷毀游戲結束!
?
17、為了防止敵機未被消滅會一直存活下去,我們可以在屏幕下方放置一個空的碰撞體,敵機碰到它就自動銷毀咯。
?
18、通過上面所有步驟,我們就能控制戰機移動、發射子彈攻擊或直接撞擊敵機。一個太空飛機大戰游戲初期形式到此已基本完成!
后面,我們可以在這基礎上動手去增加擴展:
超級敵機,繼承自普通敵機,它將具備攻擊能力,生命也更強,可以自動朝主角戰機發射子彈,被其子彈命中可以減少主角生命值;
敵人生成器;
用GUI來展示游戲信息,比如戰機生命值、當前得分,游戲失敗狀態等等;
可以加個start.scene新場景,加開始游戲按鈕,點擊后才進入game.scene;
可以改下戰機移動,除方向鍵外,增加鼠標移動的控制,方便發布到手機上。
遇到的坑:我確認都已經將子彈、敵機、主角戰機都加好了剛體等,也激活了碰撞等等,運行時候總是不能觸發OnTriggerEnter,無奈打不了飛機。后來發現是子彈、敵機、主角戰機三游戲體的position里y不一樣導致的!雖是一個簡單的錯誤,可能很多時候都沒注意導致小有糾結!所以這里注意下咯~
就先分享以上內容......
結束語:
簡單的一個游戲,這里涉及到unity制作游戲的很多基礎內容,包括unity編輯器基本使用、資源管理、編寫控制腳本、添加各種組件、聲音、使用物理功能等等,還有碰撞、prefab等等。除了上面說的擴展,我們還可以為這個游戲添加更多細節要素,更好的流程體驗!
總結
以上是生活随笔為你收集整理的用Unity快速开发太空飞机大战游戏实战经验分享(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unity实用技术:色盲玩家也能享受好的
- 下一篇: 再谈网游同步技术:实时动作游戏同步方式和