在此附上"全民做遊戲unity3D跨平台遊戲開發寶典" 章節與筆記
啟稿: 2016/10/06
完稿: 2016/10/30
Chapter 1系統概觀與操作介面篇
1.11-1 系統概觀
1.21-2 軟體安裝與常見資源介紹
1.31-3 系統選單
1.41-4 各視窗功能介紹
Chapter 202 基本操作與元件使用篇
2.1建立場景與基本物件
2.2光源使用與設定
Import Package > Light Flares(ver4) = Import Package > Effects > Light Flares (ver5.4)
2.3攝影機使用與設定
2.4物理元件使用與設定
碰撞材質:
Import Package > Characters > Physical Materials
Sphere > Sphere Collider > Material : Bouncy
Plane > Mesh Collider : Checked
互動布料Cloth材質:
Interactive Cloth(ver4) = Cloth(ver5.4)
Cloth Renderer(ver4) = default include in plan(ver5.4)
會增加兩個特性: Skinned Mesh Renderer 與 Cloth
Skinned Mesh Renderer > Mesh : “Plane”
Cloth > Use Gravity: uncheck
Skinned Mesh Renderer > Materials > Element 0:
彈跳布料:
改變cube,cylinder長度並放在兩旁
Attached Collider(ver4) = Capsule/Sphere Collider (ver5.4)
2.5分子運動與軌跡成像
分子運動
Import Package > Particles(ver4) = Import Package > Particle System(ver5.4)? C# script error!
軌跡
Component>Particles>Trail Renderer(ver4) = Component>Effects>Trail Renderer(ver5.4)
2.6動畫編輯器
Chapter 3場景及環境設定篇
3.1地型編輯器
Terrain>Create Terrain(ver4) = GameObject> Terrain(ver5.4)
Terrain>Set Resolution(ver4) = Terrain>Inspector>Terrain Setting(Icon)>Resolution (ver5.4 Icon)
Terrain>Flatten Heightmap(ver4) = Terrain>Inspector>Paint Height(Icon) (ver5.4 Icon)
#Keywords
Opacity=不透明度,在此為強度
Target Strength=對象強度,在此為透明度
Edit Coast
=Raise/Lower Terrain: 按住Shift key = Lower
Edit火山地貌
=icon4 paint brush> edit Textures >Add Terrain Texture
Select tiling texture
火山color: icon4: size=100, Opacity=5, Target Strength=1
火山錐: icon2: size=100, Opacity=5, height=100 (由外往內畫)
火山口: icon2: size=11, Opacity=5, height=30
Smooth: icon3: size=40, Opacity=30
岩石: icon4: size 12, Opacity=2, Target Strength=0.642875, texture=bigtree_bark_diffuse
匯入花草
Detail Setup:
Detail Distance:設定花草的顯示距離
Tree Distance: 樹木的顯示距離
Billboard Start:動態混合的起始距離
Fade Length:設定2D與3D的混合距離
Max Mesh Trees:同時顯示樹木最高數量
3.2樹木產生器
3.3光源設定
3.4水、天空及風力設定
水:
Import Package > Environment > Water(ver5.4)
Drog: Environment > Water>Water4>Prefabs: Water4Advance -> MyScense tree list
改變初始位置x,z不然看不到y=5,並改變scale x and z
天空:
Unity5.4 default without skybox material. Download from assets store
風:
Radius:範圍
Wind Main:風力
Wind Turbulence:亂流大小
Wind Pulse Magnitude:搖曳幅度
Wind Pulse Frequency:搖曳頻率
3.5分子運動
Import error?
3.6環境音效及背景音樂
Chapter 4資源的匯出與匯入
4.1善用Project 視窗
4.23D 模型資源的製作、優化、與匯出匯入
u如何優化3D資源
#注意3D物件的面數
行動平台建議面數為: 300-1500 triangles
PC平台建議面數為: 500-3000 triangles
次世代遊戲平台如PS3/Xbox建議面數為: 5000-7000 triangles
#3D物件應做好合併且注意材質球的使用
引擎成像draw call數量很重要,一般引擎透過一個draw call告訴顯示卡模型如何呈現,另外再透過另一個draw call呼叫貼圖材質
Mesh:3D物件網格
Combine Children (ver4) = import example script err?(ver5.4)
#減少骨架數量
角色建議使用15-60 根骨頭,
#正確命名骨架與模型
匯入方便,同時也方便成是可套用Ragdoll布娃娃模組
Maya/3d Max維持預設名稱,便於匯入Motion Builder
u3D模型資源匯出
#Maya
File: .ma/.mb,但電腦必須先裝有MAYA
Freeze:將物件目前的位移、旋轉、縮放數至當成原生位置
#3ds Max
Reset XForm: same as Maya Freeze
Skin: 綁定骨架的方法比較不會有問題
#Motion Builder
FBX是Motion Builder原生格式
輸出記的Takes打勾
u3D模型資源匯入
建立Models/xxx,將FBX file直接拖拉至Project/xxx路徑
Unity自動將所有貼圖與材質獨立出一個資料夾
Materials: 材質資料夾,FBX帶有正確材質資訊
uNormal Map 法線貼圖
支援Normal Map的軟體: MUdbox, Zbrush…etc
Normal Map有兩張圖:一張為一般貼圖,另一張為Bump貼圖
Inspector>Sheders>Diffuse(ver4) = Inspector>Sheders>Legacy Shaders>Bumped Specular(ver5.4)
Diffuse:
Diffuse detail:
Bumped Diffuse: Diffuse加上Bumped
Bumped Specular: Bumped Diffuse加上光影
4.32D 圖像的製作、優化、與匯出匯入
u圖像注意事項
長寬解析度盡量是power of two二的次方,如64x128
u圖檔基本輸出大小設定
圖檔: Inspector>default(最下方)為發佈到不同平台的設定,
如:icon(地球):Override for web
icon(window):Override for Standalone
icon(下箭頭):Override for Android
u貼圖形態設定
Texture Type:
Texture:
Normal Map:
Edit GUI and Legacy GUI:
Sprite:
Curse:
Cubemap:
Cookie
Lightmap:
Advance: 所有細節設定出現
4.4聲音資源的匯出匯入
時間較長音樂或音效建議使用壓縮格式,較短的音樂或音效建議使用未壓縮格式
未壓縮格式在Window:Wav ,在Mac:AIFF
手機強制轉成MP3
Rooloff mode:衰弱模式
增加曲線的點: 按右鍵>Add Key
uAudio Reverb Zone殘響區
選取物件:Component > Audio > Audio Reverb Zone 出現圓球範圍
Reverb Preset:預設多種EQ場景 e.g. Room
4.5影片資源的匯出匯入
只有Pro/Advance version才有影片匯入的功能,它會透過Apple QuickTime轉檔。
4.6資源的打包與備份
u匯出打包檔
在project對想要打包資料夾上按右鍵>Export Package
Chapter 5Unity 程式腳本入門介紹及練習
5.1程式腳本撰寫工具與API 函式庫介紹
支援三種腳本語言:JavaScript/C#/Boo(Python)
u5-1-1 程式腳本撰寫工具
Unity 3.0 IDE > MonoDevelop
u5-1-2 API 函式庫
u5-1-3 本機端與網路端API 函式庫
API lib: Help > Scripting Reference
5.2JavaScript 基本概念與Unity 腳本結構
u5-2-1 語言的選擇與物件導向特色
JaveScript: 1995網景推出,Java: 1990昇陽公司
u5-2-2 程式腳本概念與結構
5.3JavaScript 基本語法
u5-3-1 語法基本概念
u5-3-2 練習環境準備
u5-3-3 數學運算子—加減乘除法
u5-3-4 數學運算子—其它算式
u5-3-5 指定運算子
u5-3-6 比較運算子
u5-3-7 邏輯運算子
u5-3-8 條件語法
switch(n){
case 1: …break;
default:
}
While(…){
}
u5-3-9 迴路語法(迴圈語法)
5.4Unity 基本功能函式語法介紹及練習
u5-4-1 位移與旋轉
位移
transform.Translate(0,0.1,0);
旋轉
transform.Rotate(0,5,0);
u5-4-2 時間控制—Time
Time.deltaTime: per sec
transform.Rotate(0,5*Time.deltaTime,0);
#Light Object
自行定義Brighter script在Light 物件LightScript
function Brighter () {
Light.intensity += 0.01*Time.deltaTime;
}
需要一個empty GameObject啟動ControlScript
function Update () {
var otherscript=GetComponent(LightScript);
otherscript.Brighter();
}
u5-4-3 存取及控制其它元件
u5-4-4 存取物件資訊
#利用元件變數宣告
var target:Transform;
function Update () {
target.Translate(0,0.1,0);
}
#使用名稱或標籤來尋找物件
var HandsomeGuy:GameObject.Find(“Heney”);
HandsomeGuy.Translate(0,0.1,0);
Or
var HandsomeGuy:GameObject.FindwithTag(“Heney”);
HandsomeGuy.Translate(0,0.1,0);
u5-4-5 動態生成 Instantiate
var box:GameObject;
function Update () {
if(Input.GetButtonDown("Fire1")){
Instantiate(box,transform.position,transform.rotation);
}
}
Chapter 6遊戲行為(一)
6.1Unity 內建的第一人稱角色控制器
#Older version problem:
\Standard Assets\Scripts\Utility Scripts\MeshCombineUtility.cs有問題>upgrade
\3.Scripts\*.js有問題
操作方法:
- 拖曳第一人稱控制器(\Standard Assets\Character Controller\First Person Controller
- Character Controller: Capsule碰撞器
- Mouse Look:控制攝影機選轉的腳本,利用滑鼠控制
- haracter Motor: Unity3新功能,控制角色的走路速度、地心引力、跳躍,平台移動偵測
Play: WASD/上下左右,滑鼠改變視野
Note: 刪除原來場景中的攝影機,改由第一人稱控制器內建攝影機
6.2內建第三人稱角色控制器
第三人稱視角攝影機在人物後方跟隨,所以場景中要有攝影機;且官方的第三人稱視角攝影機控制腳本使用標籤系統來尋找攝影機,所以要Camera在Tag下拉選單選取MainCamera
6.3維京大叔動起來!—自訂你的第三人稱控制器
第三人稱採用Assets\1.Models\Vikin\ Vikin.fbx
- Step1:
加入控制腳本: Assets\3.Scripts\ _01_CharacterMoveControl.js
調整控制腳本位置不然都插在土裡,e.g. Height=1.5, Radius=0.3, Skin Width, Center/Y=0.8
Unity3D預設並沒有Run> Err
ArgumentException: Input Button Run is not setup.
To change the input settings use: Edit -> Project Settings -> Input
_01_CharacterMoveControl.Update () (at Assets/3.Scripts/_01_CharacterMoveControl.js:31)
Menu>Edit>Project Settings >Input
原來只有18 setting,改為19在最後設定名稱Run,並設定Positive Button為left shift
- Step2:
加入控制腳本: Assets\3.Scripts\ _02_CharachterAnimControl.js
Unity3D ver4 to 5預設並沒有slicing> Err
BCE0048: Type 'UnityEngine.Component' does not support slicing.
animation["5_Attack"].wrapMode = WrapMode.Once;
6.4維京大叔的家—開門觸發
- Step1:
加入MyHouse: \Assets\1.Models\MyHouse\MyHouse.fbx
- Step2:
加入控制腳本: Assets\3.Scripts\ _03_Collision_OpenDoor.js
加入控制腳本: Assets\3.Scripts\ _05_Collision_DiamondGet.js (因為前一個有呼叫到它)
_03_Collision_OpenDoor.js修正ver4>ver5
//HouseAll.animation.Play("Anim_OpenDoor");
HouseAll.GetComponent.<Animation>().Play("Anim_OpenDoor");
//audio.PlayOneShot(OpenDoorSound);
GetComponent.<AudioSource>().PlayOneShot(OpenDoorSound);
_05_Collision_DiamondGet.js修正ver4>ver5
//audio.PlayOneShot(CollectSound);
GetComponent.<AudioSource>().PlayOneShot(CollectSound);
Add _03_Collision_OpenDoor.js到Vikin並將參數指定物件與音源檔,Diamond Require設為零,們的動畫先設為close
6.5收集魔法鑽石—道具收集
- Step1:
加入控制腳本: Assets\3.Scripts\ _04_Func_RotateMySelf.js
- Step2:
加入Diamond: \Assets\1.Models\MyDiamond\MyDiamond.fbx
Diamond預設是預製物,Add Tag > 加一個Tag : Tag_Diamond > 設定為Tag_Diamond
Mesh Collider > Convex防止模型破面或穿透
製作Diamond實物: 在7.Prefabs資料加上按右鍵>Create>Prefab(建立一個空的預製物容器,變白色),將階層視窗中MyDiamond拖曳至專案預製物容器,變藍色
- Step3:
加入控制腳本: Assets\3.Scripts\ _05_Collision_DiamondGet.js到Vikin身上
6.6道具數量顯示(GUI)與開門功能結合
- Step1:
加入控制腳本: Assets\3.Scripts\ _06_GUI_Display_DiamondGet.js
修正ver4>5
//guiTexture.texture = DiamondTexture[_05_Collision_DiamondGet.GetCount];
GetComponent.<GUITexture>().texture = DiamondTexture[_05_Collision_DiamondGet.GetCount];
- Step2:
建立GUITexture介面圖像,技巧:先選圖像在建立GUI Texture,Unity會自動調大小and命名。
在Assets\4.Texture\ GUI_Diamond_4.png將Texture Type改為GUI
修正ver4>5
Menu: GameObject>Create Other>GUI Texture
正ver5
Menu: GameObject>UI>Image得到一個Canvas>Image(Not correct!!)
Menu: GameObject>Create Empty -> Component>Rendering>GUI Texture (Not correct either)
Chapter 707 遊戲行為(二)
7.1維京大叔的魔法斧頭—動態生成
- Step1: 選取斧頭
Duplicate and move to side,加入三個物理元件Rigidbody, Mesh Collider, Constant Force
記得Mesh Collider選取Covex防止不必要的穿越
Add Tag: Tag_Axe套用
- Step2: 消除斧頭的功能
加入控制腳本: Assets\3.Scripts\ _07_Func_KillAxe.js
- Step3: 產生斧頭預製物
Project>7.Prefabs 右鍵Create>Prefab,拖拉結構之Axe到此預製物
可以刪除原來duplicate Axe
- Step4: 新增投射器
新增空的遊戲物件,命名Thrower,並附在Vikin階層下方,reset位置,並移動位置到投射點
加入控制腳本: Assets\3.Scripts\ _08_Func_ThrowAxe.js
vers4>5
//Physics.IgnoreCollision(Axe.collider, transform.root.collider);
Physics.IgnoreCollision(Axe.GetComponent.<Collider>(), transform.root.GetComponent.<Collider>());
//audio.PlayOneShot(ThrowerSound);
GetComponent.<AudioSource>().PlayOneShot(ThrowerSound);
Remark,不然要到祭壇才能
if(_11_Trigger_MagicStage.FireStatus == true)
控制腳本>Axe Source=拖拉Prefab之Axe
控制腳本>Thrower Sound=Sound_Throw2
調整Prefab之Axe>Relative Torque>X=30自體旋轉
7.2萬惡的蜘蛛精—標靶射擊行為設計
- Step1: 拖曳MyTarget Model
修改MyTarget>Stem: Mesh Collider uncheck如此必須打到頭才會倒下
Animation先設為Up不然不作用
- Step2:
加入控制腳本: Assets\3.Scripts\ _09_Collision_TargetHit.js
vers4>5
//TargetRoot.animation.Play("Target_Down");
TargetRoot.GetComponent.<Animation>().Play("Target_Down");
//audio.PlayOneShot(DwSound);
GetComponent.<AudioSource>().PlayOneShot(DwSound);
//this.collider.isTrigger = true;
this.GetComponent.<Collider>().isTrigger = true;
去掉控制腳本10因為GUI有問題
//_10_GUI_Display_SpiderHit.SpiderHitCount ++ ;
執行後錯誤如下
this.GetComponent.<Collider>().isTrigger = true; 避免倒下時被斧頭重複撞擊
7.3魔法祭壇—觸發區域行為設計
- Step1: 魔法祭壇
1.Models >MagicStage/ MagicStage.fbx
- Step2:加上火焰
拖曳6.Effects>Effect_Flame先加入到祭壇,Reset Position四個先對齊scale=0.075,z=0.1
再將Effect_Flame拖離祭壇子物件
- Step3: Trigger
新增GameObject命名為Effect_MagicCir_Emitter放於祭壇中心偏上一點
製作觸發區:選取祭壇>Component>Physics>Box Collider (default already Add)
Box Collider: ”Is Trigger” check:變成一個觸發器而不再有任何物理特性
- Step4:
加入控制腳本: Assets\3.Scripts\ _11_Trigger_MagicStage.js
加入Effect_MagicCir
Remark CrossHair for Error on GUI
Viking: Hierarchy>Vikin
Target: Hierarchy>MyTarget
Magic Cir: Project>8.Effects>Effect_ MagicCir
Stage Flame: Hierarchy>Effect_Flame
Magic Cir Emitter: Hierarchy> Effect_MagicCir_Emitter
- Step5:
Axe軌跡成像
點許Axe,Component>Effect>Trail renderer
Trail renderer >Materials=BFFlash
重製特效
Effect_MagicBom加在斧頭上
7.4維京人的機關—彈射撞擊行為設計
7.5維京人回家囉—攝影機切換與過關物件
- Step1:
建立空的遊戲物件命名為Story_Controller
建立Camera命名為Story_Camera,按Ctrl+6呼叫動畫編輯器
- Step2:
加入_15_StoryCamControll.js,拖曳到Story_Controller
參數Player Cam=Vikin
Story1 Cam= Story_Camera
Chapter 8 使用者介面(GUI)與關卡連接
8.1起始關卡與GUISkin
Files>New Scene命名為StartMenu
8.2預載關卡與模型設定
8.3過關關卡與載入進度
Chapter 9秘技篇
9.1神奇的動態程序化貼圖—Substance
u9-1-1 什麼是Substance ?
Substance由Allegorithmic公司所開發的動態程序化貼圖技術,有下特點:
- 檔案非常小:內容只有描述,只有幾KB
- 使用參數就大幅變更圖檔樣貌:貼圖屬性多元,如同一張貼圖,可以透過屬性定義不同季節、天氣、新舊、紋路、深度。Unity vers3.4, Maya 2012, 3ds Max 2012開始支援。
u9-1-2 宛如神奇的時光機器—氣流展示專案
- 新增空專案,Menu>Window>Asset Store
- 搜尋框鍵入airstream,點擊進入頁面(Allegorithmic官方展示範例)
- Download下載至我們的專案中
- 下載完成會跳出打包檔視窗
- 匯入Import完成會看見Airstream目錄有Airstream情境檔,Double Click
- 左上提示按下空白鍵可以顯示選單,下方有介面拉桿Get dirty
- 左上空白鍵選單有自由視角(Discover Substance)、檢視降低程度(Size reduction)、動畫(Animation)
分析Substance檔案結構
- Project>Textures展開看見很多紅色火焰的檔案,這就是Substance貼圖
- 點選任一物件,屬性欄有不同的屬性參數可以調整,e.g. Oldn Dirty = Get Dirty
- 所有參數都可被腳本控制
u9-1-3 免費素材大放送!— 素材下載
- 新增空專案,Menu>Window>Asset Store
- 搜尋框鍵入eighteen,有個免費18貼圖材料(Eighteen Free Substances),點擊下載
u9-1-4 自訂你的神奇材質—BitmapToMaterial
官方提供付費工具BitmapToMaterial,使用自定的圖檔來產生程序的變化
也可使用免費BitmapToMaterial free trial:
- 在Asset Store搜尋框鍵入bitmap
- Download
- Import to Project>看見B2M_Example場景檔及 Bitmap2Material Trial,Double Click場景檔
- 屬性有相當多的參數可調整,如同免費素材;不同的最下方有一個參數Input,可以自定圖檔來源
- 無論哪個圖檔,都會立即產生Specular,Normalmap
9.2超快速產生人物角色動作—Mixamo 雲端角色動作平台
u9-2-1 什麼是Mixamo ?
Mixamo是一個動作資料平台www.mixamo.com or www.mixamo.com.tw,提供相當豐富的動作資料,也提供將動作套用在人物工具,完成後直接在Unity用。
- 提供角色創造工具
- 提供自動骨架綁定工具
- 線上動作套用及編輯
u9-2-2 超快速創造及編輯你的Unity 人物角色—角色建立系統
- 到官網>到characters頁面,Pro Character: 編輯方式一步一步調整,Upload: 上傳自定角色,Standard Character: 直接使用Mixamo所提供的標準角色
- 選擇Pro Character
- 可使用Mixamo所提供的角色範例來修改,Blank則為自定
- 選擇Mixamo所提供的角色範例,確認後系統會再確認Generate/Customize
- 選擇Customize後,左邊方塊為可以修改的項目,中間拉桿為改變弧度,最右邊為修改樣子
- 最後Generate並取名,系統開始建立你的角色,建立完成會通知
- 好了訊息的右方箭頭下拉,選取view your character
- 會開啟editor頁次,右邊為動作編修介面
u9-2-3 超快速套用及編輯你的人物動作—動作編輯系統
- 點擊motions頁面,左方搜尋框輸入tpose,可以找到免費動作檔
- 點擊動作檔自動切換到editor視窗,內有內建的角色人物
- 要使用自定的角色,可點擊左下角Edit Character按鍵,選單中選取即可切換。
- 確認後,點擊由上方download下載動作
- 下載視窗可選擇是否包含模型或只要骨架,還可輸出unity格式
- 下載記得建立一個資料夾,並命名好
- 回到motions頁面,左方搜尋框輸入idle,可以找到很多動作檔
- 同樣做法,但套用時要改變手臂角度,可在右邊編輯器找到arm space進行調整
- Download需要消費1 credit
- 在此我們只需要下載骨架就好Skeleton only
- 存檔時注意動作檔命名規則,如角色原始檔GreenBoBo,idle動作檔命名為GreenBoBo@1_idle
- 除了回到motions頁面,可在edit頁面下方圖中所示的Click to Add尋找增加動作。
- 下載前記得下方只保留我們需要的動作,才不會自動串接成一連串動作
- 直接將整個資料夾拖曳到Unity匯入
- 建立新場景及一個plan,拖曳GreenBoBo
- 將原來Vikin第一及第二script加在GreenBoBo
u9-2-4 上傳自訂的角色—快速自動綁定
- 到官網>到characters頁面,選擇Upload: 上傳自定角色
- 進入上傳頁面,點擊upload
- 選擇剛才模型檔,但要將骨架清除
- 上傳完成後,看見模型在自動綁定的預覽位置
- 依系統指示,選定部位的位置
- 定義完成點擊preview進行綁定,大約1-3mins完成
- 綁定後就可在editor中進行動作套用
9.3奇銳科技與工研院合作研發國內第一款UnityAR 套件
Chapter 10 行動平台直向射擊遊戲
10.1開發環境準備
10.2建立專案、匯入練習檔及動態太空背景
- Import CrazyShooter
- Save Scene: CrazyShooter
- 建立plane,改變攝影機、燈光視角由上往下
- 取Material材質球,命名為StarFied_Far,指派到plane
- Unity提供 renderer.material.mainTextureOffset來控製圖片移動,所以利用腳本把移動速度暴露出來,將_01_StarFieldScroll.js加到太空背景,設速度-0.05
- 將太空背景複至三份,更改對映名稱StarFied_Far, StarFied_Mid, StarFied_Close
- 改StarFied_Mid, StarFied_Close材質屬性為透空,Shader下拉選單選Legacy Shaders>Transparent>Diffuse
- StarFied_Close (0,0,0) speed=-0.2, StarFied_ Mid (0,-0.01,0) speed=-0.1, StarFied_ Far (0,-0.02,0) speed=-0.05
10.3主角戰機及飛行控制
主要會以動態生成的方式出現,也就是會死亡、重生、變形,所以會以一個空的遊戲物件當主角,而飛機模型是這個遊戲物件的子物件,所有碰撞、控制、音效都附加在最上層遊戲物件上。
- 新增遊戲物件命名Player,在標籤選單選內建已有的Player標籤
- Models選取CrazyShooter模型拖曳到Player,調整大小
- 加碰撞元件,選Player在Component>Physics>Rigidbody and Component>Physics>Capsule Collider
- 設定Rigidbody>Is Kinematic(運動學的,以確保物理碰撞正常)及Capsule Collider>Is Trigger,最後調整大小
加入Unity搖桿物件模組,
- Project>Standard Assets(Mobile)>Prefabs>Dual Joysticks
- Philip Note: 或在version 5 Project>Import Unity Package>2D : Standard Assets>Prefabs如下
但是在PC version有問題
- 將_02_PlayerControl腳本拖移到Player,設定Android Fly Speed=10, Pc Fly Speed=10, Fly Limit X=100, Fly Limit Y=100
- 若要在Android要設定Android SDK的安裝資料夾,可在Edit>Preferences…>Android SDK Location
10.4開火控制(發射雷射)
- 建立一個空的遊戲物件命名Player_Laser
- Add Tag = Laser加給Player_Laser
- 建立Cylinder物件,至於Player_Laser下成子物件,reset,改變大小角度(0.05,0.4,0.05), (90,0,0)
- 原來Cylinder有Collider,但我們要新增在Player_Laser,所以將Cylinder的Collider移除
- 賦予Player_Laser物力碰撞元件,所以加入Rigidbody , Capsule Collider
- Capsule Collider是長條型,可能造成敵機重生時,一次擊中兩架的誤判,所以將Capsule Collider設定前方一小段就好。Z=0.35, Radius=0.05, Height=0.2, Direction=Z
- 賦予Cylinder材質Materials>Player_Laser
- 如同戰機一樣,超出範圍就刪除自己,加入腳本_03_PlayerLaserMove.js,設定Laser Speed=4, Laser Fly X=4, Laser Fly Z=3
- 新增一個預製容器Player_Laser(白色),再將整個Player_Laser拖曳至此容器,就可以把場景的Player_Laser刪除
- 加入Player腳本_04_Fire,並將Prefab>Player_Laser拖曳到腳本_04_Fire>Laser欄位
10.5製作敵方戰機
- 如同戰機一樣,新增一個空白的遊戲物件,命名為Enemy_1,並製作Enemy標籤貼上。
- Model找到Enemy_1模型將它賦予在敵機物件上
- 加入物件Rigidbody, Capsule Collider記住設定Is Kinematic, Is Trigger
- 敵機功能腳本較多,加入自主性移動_05_Enemy_Move,對主角開槍_06_Enemy1_Fire,備雷射或主角撞到爆炸_07_Enemy1Collision。
10.6製作敵機所需物件
雷射
- 複製主角雷射,更名為Enemy_Laser,加如同主角的腳本
- 改變材質球為敵機雷射,改變-Z,速度-1向下移動
- 選取音效Laser3
爆炸
- Standard Asset > Particles > Legacy Particles: explosion ?? (Prefab找)
- Remove original script , light particle and animation
- One short
- Add _10_DestroyMe.js , time=3
- Add sound
得分:利用Unity GUI Texture
- Unity預設以左下角當基準點,若要設在正中央,要透過Pixel Inset校正
- 圖片10x5, Pixel Inset x=-5,y=-2.5
- GUI_Point_100加上_08_GUI_Points-Move
火力提升PowerUp
- 空遊戲物件Add Models> PowerUp
- 加入Rigidbody, Capsule Collider記住設定Is Kinematic, Is Trigger
- 加上_09_PowerUp_Collision,並加入PowerUp_Sound到階層中再加入參數
- 加上_10_DestroyMe
10.7遊戲控制器
關卡型的遊戲製作,常常會用一個遊戲控制器來控制所有元素,如關卡數、生命、敵機生成、主角生成
- 空遊戲物件加上_11_GameController
- 敵機數量控制以矩陣方式宣告,Size=3,先都設為Enemy1
- My Skin= GUISkin>Crazy Shooter
10.8主角碰撞、追蹤牆及生命數介面
- 拖曳Player到結構中再加上_12_PlayerCollision
- 加上爆炸物件及音效
- Invince Delay重生無敵時間
加追蹤牆
- 加上空物件TrackingWall
- 再加上兩個空物件TrackingWall_L,TrackingWall_R,並將兩物件加到TrackingWall下成為子物件
- 先左邊,選取TrackingWall_L,新增Box Collider,要讓它涵蓋整個場景的x軸
GUI Texture
- 新增GUI Texture 命名GUI _Lives,Problem in ver5.4
- Texture>Lives_3圖
- 將_13_GUI_Lives賦予GUI _Lives,三條命的圖所以矩陣為4
10.9製作敵機2
- Copy Enemy1 > Enemy2
- Change model > Enemy2
- 改蹦撞script>_14_Enemy2Collision,多了Health
10.10敵機3 及導向飛彈
- Copy Enemy2 > Enemy3
- Change model > Enemy3 ,改Health,Fire Freq=10
導向飛彈
- 新增空物件命名Rocket,加如模型Rocket,將旗標籤設為EnemyLaser,Scale=0.3
- 加入Rigidbody, Capsule Collider記住設定Is Kinematic, Is Trigger,radius=0.1,Height=1,dir=z
- 加上_15_Rocket_Collision, _16_Rocket_Tracking, _03_PlayerLaserMove,加入參數物件,Speed=-0.5,主要是導彈前端匯匯出一條射線,照到左邊追蹤牆旋轉值減少50/sec,相反到右邊則增加。
- 噴火用之前爆炸預作物
- Ellipsolid Particles Emitter調整Min/Max size=0.3, Min/Max Emission=10,World Velocity Z=-0.2
- Particles Animator調整size grow=-0.6, Force Z=-0.76
- 移除_10_DestroyMe
10.11起始關卡及過關關卡
- New Scene,Camera加入_17_GUI_StartMenu
- Start Skin= GUISkin>StartMenu, Back Ground=Textures>StartMenu
Chapter 11單機、網頁、Andriod 平台遊戲發佈與上架
11.1單機版遊戲發佈
11.2網頁版遊戲發佈
11.3Android 手機平台發佈及上架流程
Chapter 12IOS 的發佈與上架流程
12.1開發環境準備
u12-1-1 申請開發者帳號
u12-1-2 購買開發者方案
12.2開發認證及發佈配置準備
12.3註冊開發設備
12.4應用程式識別(App IDs)
12.5安裝配置描述檔Provisioning Profile
12.6瘋狂戰機專案跨平台轉移及修正
12.7Unity 發佈設定及開發機安裝測試
12.8建立正式發佈檔
12.9發佈檔上傳及App Store 上架流程
留言列表