close

在此附上"全民做遊戲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.jsVikin身上

 

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 TextureUnity會自動調大小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

調整PrefabAxe>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 TrialDouble 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
  • 存檔時注意動作檔命名規則,如角色原始檔GreenBoBoidle動作檔命名為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,調整大小
  • 加碰撞元件,選PlayerComponent>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)
  • 原來CylinderCollider,但我們要新增在Player_Laser,所以將CylinderCollider移除
  • 賦予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_LTrackingWall_R,並將兩物件加到TrackingWall下成為子物件
  • 先左邊,選取TrackingWall_L,新增Box Collider,要讓它涵蓋整個場景的x

GUI Texture

  • 新增GUI Texture 命名GUI _LivesProblem 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 ,改HealthFire Freq=10

導向飛彈

  • 新增空物件命名Rocket,加如模型Rocket,將旗標籤設為EnemyLaserScale=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 上架流程

 

 

arrow
arrow
    文章標籤
    unity3d
    全站熱搜

    Philip4G 發表在 痞客邦 留言(0) 人氣()