Unity 版本: 5.3.5.f1
一. 遊戲策劃
操做模式:
上下左右按鍵, 空格發射子彈
遊戲中的敵人:
(1) 初級敵人,裝甲交弱,以撞擊主角爲主, 沿弧線飛行
(2) 高級敵人,裝甲較強,能夠發射子彈, 直線飛行
二.遊戲場景製做
1.導入遊戲所須要的美術資源
方法一:
Assets目錄點擊右鍵->show in explorer->將美術資源直接copy到Assets目錄
在回到unity3d界面就能夠看到相關資源
方法二:
Assets目錄點擊右鍵->import new asset->瀏覽選擇目標資源
3.建立場景
File->new sense當前場景爲level0
雙擊level0 便可選定編輯
(1).建立一個平面體做爲遊戲背景
GameObject->3D Object->Plane
U3D中採用左手座標系系統
因此咱們能夠選擇top視角(從上往下看),便可觀察到平面
(2). 建立一個材質
assets目錄右鍵->create->material
Transparent材質將帶有alpha信息,能夠設置透明度(alpha cutoff)
(3). 完成場景設定
將background拖放到建立好的plane上面便可(
U3D中不少操做均可以經過拖放來完成)
(4). 建立星空背景
繼續新建一個平面體,使其在剛剛星球平面體下方,在inspector->scale中能夠指明X和Z方向上的長度
因爲默認是1,我給2就恰好星球平面體的大小的2倍
繼續建立一個材質與其綁定
完成後效果以下:
4. 場景中添加動畫
(1) 選中星空圖平面體,菜單欄點擊Windows->animation(快捷鍵Ctrl+6)
先點左上角那個小紅點開始錄製,而後選擇curves,點擊add property
出現各類顏色的線,好比Material._Main Tex_ST.w是黃色的線
拖動這個呈直線,斜率越低速度越慢(可是隻會跑半邊動畫)
如上路效果就是星空圖相對與星球向下移動
- -!這裏被坑的有點慘,玩了半天才玩懂
5.設置攝像機和燈光
(1) 設置攝像機
調整好視角
a. 按鼠標中建平移視圖
b. 按鼠標左鍵+alt鍵旋轉視圖
c. 按鼠標右鍵+alt鍵或滑動鼠標滑輪推拉視圖
d. 按F鍵快速鎖定選中目標
調整好視角以後,在hierarchy窗口選擇Main Camera,
Main Camera是遊戲的默認攝像機
在菜單欄選擇Game Object->Align with view 使攝像機視角與當前視角保持一致.
(2).設置燈光
添加亮度
Windows->Lighting->Ambient intensity調節亮度
添加燈光
GameObject->Light->point Light
添加完畢後會出現黃色的光源範圍
默認就有一個光源(看來黃色線條表示光源)
三.遊戲主角設定
遊戲的主角是一個太空飛船,也是咱們的操做目標
1.將主角設定到場景中
將Player.fbx拖放到遊戲場景, 在asset目錄有個播放的小三角形圖標
酷炫 忽然明白了U3D就像是一套物理引擎,設計好遊戲場景,每一個場景有不一樣的物理元素(GameObject)
而後寫程序控制每一個GameObject實現遊戲邏輯
2. 編寫控制代碼
在assets目錄下新建script目錄,而後腳本目錄下新建Player.cs
雙擊腳本VS 2013打開,U3D目錄會自動生成VS的sln工程文件
將Player直接拖放到Player的Inspector窗口,便可完成腳本綁定
編寫代碼以下:
說明:
a.
Start()函數 主要執行一些初始化操做
Update()函數 每楨執行一次, 有點像Win32GUI編程中的WM_PAINT
b. Time.deltaTime表示每楨的通過時間,那些須要每楨作增減變更的數值都須要乘上Time.deltaTime
咱們的例子種速度和Time.deltaTime相乘,表示每楨移動N米距離
c. Transform組件提供的主要功能和移動,旋轉,縮放遊戲體有關,其中Vector3類型的參數用來表示在x,y,z3個方向上移動的距離
這個時候點擊場景播放,就能夠發現咱們能夠控制戰機的移動了
U3D也識別出了Speed爲1
3. 建立子彈
(1). 設定子彈體
將rocket.fbx拖放到level0場景,編寫代碼以下:
設置代碼組件後,咱們發現子彈so~一下就消失了
(2)建立子彈prefab
prefab能夠理解爲能夠重用的遊戲體,
而後咱們能夠在任意場合,時間包括其餘的U3D遊戲中重複使用
新建一個frefabs目錄,新建一個空的prefab,而後能夠直接從場景中的rocket拖放到prefabs便可
同時設置prefab腳本爲rocket.cs便可,原場景中的rocket能夠刪掉了
(3). 發射子彈
player中添加代碼,
注意必須是public,不然不會顯示在Inspector窗口
此時Inspector窗口多了Rocket屬性,將prefab的Rocket拖放到Rocket選項便可
編寫子彈邏輯,0.1秒發射一次子彈
再次運行遊戲,能夠發射子彈了
4.建立敵人
建立敵人和建立主角差很少,直接拖動到上面便可,敵人能夠複用,因此最後仍是建立prefab
編寫代碼以下:
運行遊戲,敵人開始作曲線向下運動
5. 碰撞檢測
(1).爲敵人添加碰撞
選中敵人,添加組件
添加Physics->Box Collider
將is Trigger勾選,使其觸發狀態激活
在繼續添加一個剛體,全部參與物理計算的遊戲體都須要一個剛體才能正常工做
Add Component->physics->rigidbody
去掉Use Gravity不受到重力影響
is kinematic 勾選使得遊戲體不受到物理模擬的影響
一樣爲主角和子彈添加剛體和物理碰撞
(2).設置tags
Edit->Project Setting->tags and layouts
添加2個tag
在prefab中綁定tag
(3).遊戲體碰撞檢測
敵人代碼檢測邏輯:
碰撞到子彈後,根據子彈的威力遞減生命值,當生命值爲負數時,自動銷燬
碰撞到主角,直接死亡
子彈碰撞檢測
與敵人碰撞就銷燬
主角碰撞檢測
與不是己方子彈碰撞,都減小1點生命
(4). 遊戲邊界碰撞檢測
在遊戲下方添加一個遊戲邊界(一個空的遊戲體),當敵人碰撞邊界就銷燬
6. 添加高級敵人
添加一個能夠發射子彈的高級敵人,其方法和主角同樣,只是控制交給計算機完成
高級敵人繼承於初級敵人類便可, 重載移動方式函數
Awake每次實例建立會調用一次,時機早於start函數
實例建立當即尋找當前player,每隔2秒發射一顆定向導彈
7. 聲音和特效
導入音效文件和特效文件
新建一個FX文件夾->Import Package->Custom Package->*.unitypackage文件
也能夠把本工程的特效聲音文件導出爲unitypackage文件給其餘遊戲使用
(1).聲音播放
播放聲音須要添加Audio Source組件,Add Component->Audio->
Audio Source
代碼中定義
將聲音文件與m_shootClip綁定(U3D窗口拖放便可完成綁定)
Start中初始化Audio
調用Play相關函數便可播放聲音
(2). 特效
特效的操做和聲音比較類似,定義一個Transform
U3D中將特效文件和該定義字段綁定
調用Instantiate函數播放爆炸特效
8. 敵人生成器
咱們能夠定義一些空的GameObject來源源不斷的產生敵人,道理和主角發子彈同樣
把空的GameObject發射指定邏輯的敵人
建立2個prefabs,綁定不一樣的敵人,將prefab分佈到場景的指定地點出怪便可
同時用代碼控制出怪邏輯,5~10秒隨機生成敵人
9. 遊戲管理器
遊戲信息的展現,也是在場景裏面和一個空的GameObject綁定,執行相關的代碼
10. 新場景的創建(遊戲嚮導)
File->New Scene->保存爲start
添加一個空gameobject->添加一個組件GUI Texture->指定一張圖片
將攝像機對準圖片對象
編寫代碼,經過LoadLevel能夠載入其餘場景
11. 發佈遊戲
Edit->project Setting->Player設置發佈的圖標,公司,產品名稱等信息
設置遊戲分辨率相關信息
File->Build Setting便可發佈遊戲,
啓動遊戲後程序會按列表順便播放相應的場景
遊戲運行效果