SlideShare a Scribd company logo
1 of 101
Download to read offline
第六章:遊戲行為(一)
全民做遊戲
 在練習完基本的程式腳本語法之後,接下來我們要開始練習
遊戲行為設計的部份,遊戲行為決定了整體遊戲的架構、控
制方法及玩法,在Unity 中我們可以透過腳本語言來組合變
化各種不同的遊戲邏輯及行為,因此我們先熟悉基本語法之
後,再來實際進行範例的練習。
 在範例中,我們的主角是一個維京人,透過寶物的收集以及
進入魔法祭壇打擊惡魔,最後透過維京人的機關取得回家的
寶石。
 遊戲設計中的角色控制部份,大致上來說可分為第一人稱視
角控制及第三人稱視角控制,第一人稱視角控制常用在射擊
遊戲,如:CS 絕對武力(Counter Strike)、戰地風雲
(Battlefield)、決勝時刻(Call of Duty)等作品,都是使用
第一人稱視角來表現人物的視野範圍,這種視野範圍的特性
讓玩家如身歷其境般地操控遊戲人物。
 第三人稱視角控制則常用在RPG 角色扮演及冒險、動作遊戲
等,如魔獸世界、惡魔獵人、秘境探險等。
 原則上角色的控制沒有任何的標準,每個專案都有可能設計
出獨特的角色控制功能,在範例中,我們除了介紹Unity 內建
的二種角色控制器之外,也使用自訂的角色控制來進行練習。
6-1 Unity 內建的第一人稱角色控制器
 首先我們來練習如何使用Unity 內建的第一人稱角色控制器,
新建立一個專案,在專案視窗中,點擊右鍵, 找到選單中的
Import Package –> Custom Package將外部的練習打包檔匯
入進來。
 找到練習檔中的1.CrazyIsland_V6_Start.unitypackage 並將其匯
入。
 匯入時確認所有的素材都已勾選,確保所有的素材都能匯入
進來。
 匯入完成之後,我們會看見在專案視窗中,有許多的資料夾,
找到 2.Scenes 中的TheGame 場景檔,將其載入。
 載入場景之後,在專案的空白處按右鍵,選擇 Import
Package –> Character Controller 將內建的角色控制器素材匯
入進來。
 展開Standard Asset,找到Character Controller 底下的First
Person Controller 第一人稱控制器,並將它拖曳至場景中。
 拖曳時有個小技巧,就是不要急著把左鍵放開,當我們在拖
曳控制器並且維持按住的狀態時,我們的角色控制器會吸附
並沿著地表移動,等拖曳到適當的位置,再將它放開,角色
控制器的底部就會吸附在地表,節省調整高度的時間。
 將第一人稱角色控制器放置至適當的位置後,我們在階層視
窗中選取它並查看屬性欄中的內容,我們可以看見第一人稱
角色控制器身上有幾個元件,包含Character Controller 角色控
制器、Mouse Look、Character Motor 等。
 角色控制器會生成一個 Capsule(膠囊狀)的碰撞器,如圖中
綠色線條的範圍,而這個碰撞器代表的,就是角色的高度、
碰撞範圍等等,換句話說,也可以說它就是角色的身體範圍。
 Mouse Look 則是控制攝影機旋轉的腳本,主要是利用滑鼠來
控制視角的旋轉。
 最後一個 Character Motor 則是 Unity3 新加入的功能,裡面
有很多角色控制的參數可以調整,比方說走路速度、地心引
力、跳躍能力、平台移動偵測等等相當的多,各位可以多多
測試調整這些參數來達到最佳的效果!
 點擊執行之後進行測試,我們可以透過WSAD 鍵或是上下左右
鍵來控制角色的移動走路,透過滑鼠的移動來控制角色的視
角。
 Unity 很貼心地幫我們準備了第一人稱控制器並提供了相關
的功能,如果我們的專案需要這類型的角色控制,以此為基
本我們就可以方便又快速地設定出符合我們需要的角色的控
制器。
執行並操作測試
6-2 內建第三人稱角色控制器
 Unity 除了內建了第一人稱控制器之外,也內建了一個第
三人稱控制器供我們使用,將剛才測試的第一人稱控制器
刪除之後,找到相同資料夾中的3rd Person Controller,
將它拖曳至場景中。
第三人稱控制器
 由於第三人稱視角的攝影機在人物的後方跟隨著,如果場景
中沒有攝影機的話,我們從GameObject 選單中新增一台攝影
機。
新增攝影機
 在官方的第三人稱攝影機控制腳本中,使用了標籤系統來尋找
攝影機,因此我們選擇攝影機之後,在Tag 下拉式選單中,選
擇MainCamera 賦予攝影機標籤。
 內建的第三人稱控制器預設已經把相關的控制功能寫好,使用
方式大致上和第一人稱控制器差不多,各位可以利用參數調整
多多練習。
動起來囉!
6-3 維京大叔動起來!
—自訂你的第三人稱控制器
 除了內建的第三人稱控制器之外,有時我們會因為專案的需求
而需要另外設計角色控制器,在本範例中,我們以最基本的第
三人稱角色控制來進行練習。
 首先,將剛才練習的內建第三人稱角色控制器及攝影機刪除,
接下來我們找到專案視窗中1.Models 資料夾裡的Vikin 資料
夾,找到裡面的Vikin 模型檔,這個傢伙就是我們的主角維京
大叔啦!,點擊並拖曳Vikin 模型檔至場景中。
維京大叔登場!
 在階層視窗中點擊選取Vikin 模型,我們可以看見在屬性欄的
Animation 中,維京大叔身上帶有五個動作,分別是待機、走
路、跑步、跳躍及攻擊。
維京大叔身上有五個動作
 接下來我們開始賦予維京大叔行走的功能,找到Scripts
資料夾中的_01_CharacterMoveControl,並將這個腳本拖
曳至Vikin 模型上。
 這個腳本顧名思義就是個控制移動的腳本,當我們賦予給
維京大叔時,大叔身上就立刻出現了綠色的角色控制器,
這是因為,在這個腳本的最後一行,加上了自動增加角色
控制器的程式碼,所以不管腳本附加到誰身上,都會自動
產生角色控制器,省去許多的操作步驟。
賦予腳本時自動產生角色控制器
 角色控制器預設有一半是插在
土裡的⋯,我們得趕緊將它調整
好,不然一執行的話大叔就往
海裡去了,找到屬性欄中的角
色控制器屬性,分別將長度(
Height)、範圍(Radius)、碰
撞器的厚度(Skin Width)、以
及中心位置(Center)等等,
調整至適當的數值。
 基本上,當我們把角色移動腳本賦予給大叔時,理論上大
叔就已經有行走的能力,但是當我們執行測試時,卻發現
左下角出現了錯誤訊息,點擊訊息來呼叫出除錯控制視窗
後,會看到一大串的紅字錯誤訊息。
 這個錯誤訊息的意思是,我們在腳本中使用了一個叫作
Run 的輸入設定來控制跑步,但是在Unity 的預設輸入設
定中,並沒有這個設定,請到輸入設定中去新增這個設定
。
缺少Run 這個輸入設定
 我們可以從上方選單的
Edit –> Project
Settings –> Input 來開
啟輸入設定。
開啟輸入設定
 在輸入設定中,我們可以看見,預設有15 組的輸入設定
,而每組設定中有各自定義的按鍵。
 比方說,在Fire1 中,定義了滑鼠左鍵及Ctrl 鍵為正向鍵
,假設我們的遊戲需要以滑鼠左鍵或是Ctrl 鍵來進行攻擊
或是發射,我們就可以在Unity 的腳本中,直接使用Fire1
來撰寫,這樣就可以省去繁雜的英文字母,也可以自訂較
容易記住的名稱。
 我們將數量改成16(輸入完按下 enter),然後在最下方新
增的那一組輸入設定中,將名稱設定為Run(R 大寫),
然後在正值按鈕(Positive Button)的右邊點擊並輸入,
將它定義為left shift(全部小寫)。
 在名稱的部份,R 大寫的原因是因為腳本裡所定義的跑
步鍵名稱就叫Run,所以要注意大小寫必須一致,而定義
左邊的Shift 鍵盤按鍵的部份,則通通都是小寫,而且中
間有空格(left shift),要特別注意。
 設定完成之後,就代表我們在Unity 中可以直接使用Run
來代替left shift 的定義,換句話說,在遊戲執行時,當
我們按下左邊shift 鍵的時候,就會呼叫腳本中Run 鍵按
下時的功能。
 設置好了輸入設定之後,點擊執行就不會再出現錯誤碼
囉!,如果大叔不在攝影機前方的話,我們可以先從場
景視窗來檢視控制是否正常。
 使用WSAD 鍵或是上下左右鍵來行走,目前因為只有移
動控制,所以不會有任何動作,操作的時候,大叔看起
來就像立正的阿飄一樣飄來飄去的是正常的。
英明神武的維京大叔動起來囉!
 回到一開始我們在維京大叔身上所賦予的腳本,這個腳本
的內容是移動控制,是屬於比較複雜一點的腳本,目前各
位剛開始學習遊戲行為設計,先不用急著看懂這個腳本,
等最後把範例的所有腳本都練習過熟悉了之後,再回頭來
看這個腳本會更輕鬆。
移動控制腳本
 確定維京大叔會飄了之後, 接下來我們} 找到2.Scripts
資料夾中的_02_CharacterAnimControl,將此腳本拖曳附
加至維京大叔。
 這個腳本的內容主要是透過輸入按鍵來控制動作,以及
的控制動作間的混合及播放型態。
 賦予動畫控制腳本之後,在屬性欄中可以看到幾個動畫播
放控制的參數,由於跳躍的動作需要較快速地混合,所以
我們把跳躍的混合時間設為0,如此一來,才不會造成人
已經跳在空中了,動作卻還沒播出來或是播得太慢。
設定跳躍混合為0
 設定好了之後,我們就可以執行看看整體的角色控制,執
行時,WSAD 鍵及上下左右鍵是控制行走,空白鍵是控
制跳躍,按住左邊的Shift 鍵是跑步,滑鼠左鍵是攻擊動
作。
 同樣的,在維京大叔身上的第二個腳本,是角色控制裡的
動畫控制部份,各位先不用急著看懂這個腳本裡的內容,
等練習完整個範例之後,再回頭來看這個腳本會更容易理
解。
動畫控制腳本
 第三人稱控制器的視角大部份都是位於角色的後方,也就
是說咱們大叔的後面會有台攝影機像背後靈一樣地跟著他
,我們暫且稱之為第三人稱攝影機,我們可以透過Unity
內建的攝影機跟隨腳本,快速地建立第三人稱攝影機。
 如果場景中沒有攝影機的話,我們從上方GameObject 選
單中建立一台新的攝影機。
建立攝影機
 幫攝影機取個好分類的名字,這樣子在後續專案愈來愈大
,東西愈來多時,比較容易尋找。
幫攝影機取個名字吧!
 命名完成之後,找到Standard Asset –> Scripts –>
Camera Scripts 裡,有一個叫做SmoothFollow 的腳本,
將它賦予到第三人稱攝影機上。
 這個腳本的主要功用是設定一個跟隨的目標,在腳本所
宣告出來的參數中,我們可以直接拖曳想要跟隨的物件
來進行跟隨。
 如果找不到這個腳本的話,可以從專案視窗空白處 –>
右鍵 –> Import Package –>Scripts 將內建的腳本匯入進
來使用。
 既然是第三人稱攝影機,當然跟隨的就是我們的主角維京
大叔囉,原則上我們可以直接在大叔的身上隨意找一個物
件來跟隨,或是直接拖曳整個大叔進行跟隨。
 除此之外,我們也可以另外新增一個空的遊戲物件加入成
為大叔的子物件,然後再讓攝影機跟隨這個遊戲物件,此
種作法可提高跟隨時調整的靈活度。
建立一個空的遊戲物件
 建立一個空的遊戲物件之後,將它命名一個好辨識的名稱
,然後將它拖曳成為維京大叔的子物件。
拖曳空遊戲物件成為大叔的子物件
 再來我們利用屬性欄裡,Transform 資訊右上方的齒輪呼
叫出下拉式選單,在選單中選擇Reset Position 將空遊戲
物件的位置與維京大叔對齊。
 對齊完了之後,回到
第三人稱攝影機上,
在屬性欄中,我們可
以看見跟隨腳本中有
一個Target 的參數,
指的就是攝影機要跟
隨什麼物件,把剛剛
對齊好的空遊戲物件
拖曳至參數中。
 除了跟隨的物件之外
,跟隨腳本也提供了
像距離、高度、高度
跟隨的延遲、旋轉跟
隨的延遲等參數供我
們調整。 賦予跟隨物件
 好了之後,我們可以執行檢視來查看跟隨的情形,由於預設的
高度調整會因為距離及高度有些變化,導致有些角度無法隨心
所欲地調整,此時我們就可以利用方才建立的空遊戲物件來調
整高度,如此一來就能更精準地調整到我們要的位置囉!
利用屬性欄的參數及空遊戲物件的
高度來調整最佳視角
 以上就是第三人稱角色控制器的使用方式,我們可以回想總
結一下重點,第三人控制器整體來說分為三個部份:
 角色控制器( 人物的身體碰撞範圍及移動)
 動作控制( 動畫的播放控制及混合)
 攝影機控制( 跟隨主角的攝影機及跟隨方式)
 基本上,這世界上沒有所謂的“標準的角色控制器”,每款
遊戲的控制方式或多或少都會有些不同,端看遊戲設計者所
想要呈現的方式為何。
 控制的方式有很多,範例中的第三人稱控制器是比較簡單的
一種,我們可以從這一個角色控制器來開始慢慢了解,在
Unity 中角色控制器的設計方式及使用的方法,多多練習抓
住要訣之後,我們就能設計出屬於自已的角色控制器囉!
帥氣的大叔 ~
6-4 維京大叔的家—開門觸發
 練習完角色控制器之後,接下來我們要開始練習常見的遊
戲行為,首先我們來練習在遊戲製作中常常用到的功能之
一—碰撞偵測。
 在練習之前,我們先把需要的環境及素材準備好,首先我
們找到專案視窗中1.Models –> MyHouse 資料夾,裡面有
一個名為MyHouse 的模型,將它拖曳至場景中,找個山明
水秀的地方安置咱們維京大叔的家吧!
維京大叔的家登場!
 拖曳至場景之後,在階層視窗中選取並查看屬性欄的
Animation 部份,我們可以看見,這間房子本身帶有三段動畫
,分別為待機、開門及關門動畫。
 回顧一下模型匯入的功能,這間房子是由Maya 輸出而來,在
Maya 中製作時,這三段動畫是Key 在同一段時間軸上,也就
是說,從待機、開門到關門這三段動畫是一連串的,而我們
拖曳至場景中會一段一段地幫我們分開,主要是因為在模型
的設定中,使用了Split Animation 的緣故。
 圖中我們可以看見,在模型的屬性中,我們事先定義好了,
房子的待機動畫是由第1 格至第10 格,開門動畫是由第11
格至第60 格,關門動畫是由61 格至70格,也因為事先作好
了動畫分割的設定,因此在拖曳至場景時,Unity 就能幫我們
直接切割出每段動畫的段落。
動畫分割
 了解了動畫分割的原理之後,接下來回到我們的場景上,將
維京大叔拖曳至房子的前方,檢查人與房子的大小比例是否
正確。
 這裡要再次提醒大家,在選取物件及拖曳物件的時候,儘量
不要直接點擊場景中的物件,請在階層視窗中找到該物件來
選取,因為大部份的物件都帶有子物件,有時我們直接點擊
畫面中的物件時,選到的其實是子物件,結果,就會造成子
物件動了,父級物件卻沒有移動的錯誤。
英明神武的房子!
 接下來我們要使用第三號腳本來創造開門觸發的效果,在使用
之前,我們先來看一下腳本的內容,在專案視窗中找到第三號
腳本_03_Collision_OpenDoor,Double-Click 呼叫Mono 來編輯
並查看腳本內容。
開門觸發腳本
 開門觸發腳本說明:腳本的內容主要是利用碰撞觸發來開啟
房子的門,並且自動執行後續的動作。
 /* 變數宣告 */:腳本的一開始,宣告了房子、門、音效、計
時器、關門時間、開門狀態以及鑽石的需求量等等的變數。
 /* 角色碰撞功能*/:第二個部份, 是角色碰撞功能的部份,
這個函式使用的是OnControllerColliderHIt,意思就是如果主角
(Controller)碰撞到的話才會起作用,不是主角的話,就不
起作用,等於是帶有條件的碰撞判斷。
 執行內容大致上是說,當維京大叔撞到門,而且門是關著的
,而且身上有足夠的鑽石時,執行開門功能。
 /* 開門功能 */:開門的功能主要是呼應上一個功能,這個功
能比較單純,執行時就是依序將內容執行一次。
 執行內容大致上是說,當開門功能執行時,將開門狀態設定
為" 是",播放房子(整體)的開門動畫,播放一次開門音效
。
 /* 功能: 持續執行(開門計時器) */:這個開門計時器是一
個持續執行的功能,這裡要注意的重點是Time.deltaTime的用法
,這個功能是指每秒的意思,當我們需要固定的時間時,就可
以用Time.deltaTime 來加乘。
 執行內容大致上是說,如果門被打開的時候,啟動一個計時器
,當計時器的數值大於指定的時間時,執行關門功能。
 /* 功能: 關門 */:關門的功能主要是呼應上一個功能,這個
功能比較單純,執行時就是依序將內容執行一次。
 執行內容大致上是說,當關門功能執行時,將開門狀態設定為
" 否",播放房子(整體)的關門動畫,播放一次關門音效,將
開門計時器歸零。
 /* 附加腳本時自動生成AudioSource 元件*/:最後一行則是一
個自動生成元件的語法,讓我們在附加腳本時,就自動在該物
件上生成一個AudioSource 元件
 了解了開門觸發腳本的內容之後,回到我們的場景中,將開門
觸發腳本拖曳附加至維京大叔身上。
賦予開門觸發腳本
 選取維京大叔,找到屬性欄中開門觸發腳本所宣告的變數,將
所需的物件一一拖曳進來。
 這裡要注意一點,HouseAll 指的是整間房子,原因是因為動畫
是附加在房子的最上層物件上,所以當我們要播放動畫時,呼
叫的必須是最上層物件,所以屬性欄中的HouseAll 變數必須要
選擇房子的最上層物件。
 而 Door 的部份,指的是維京大叔要撞的那扇門,所以要找到
房子階層下的那扇門,而不是最上層物件,如果拖曳最上層物
件,也就是把整棟房子賦予Door 變數的話,就會造成靈異事
件,大叔只要隨便碰個牆邊,門就開了⋯
賦予正確的物件
 除了房子及門之外,音效部份可以在 6.Sounds 資料夾中找到
。
賦予音效
 最後一個變數,是開門時所需要的鑽石數量,由於目前我們還
沒有鑽石可以取得,因此先將這個數值設為0。
將鑽石所需數量設置為0
6-5 收集魔法鑽石—道具收集
 由於維京大叔兇狠可愛的老婆大人,出門前交代一定要收集
魔法鑽石到一定的數量才可以回家,所以接下來我們要來練
習道具收集的功能。
 首先我們除了要準備一個魔法鑽石之外,鑽石的收集功能分
為二個部份行為,一個是鑽石本身的功能,一個是主角碰撞
到鑽石時的行為。
 在建立鑽石之前,我們先來看看鑽石本身的功能,在專案視
窗中找到第四號腳本_04_Func_RotateMyself,Double-Click
呼叫Mono 來查看腳本內容。
打開旋轉腳本
 鑽石旋轉功能腳本說明: 這個腳本的內容主要是旋轉自身,
不管是附加在什麼物件上,在執行時會沿著指定的軸向及速度
旋轉。
 /* 變數宣告 */ :宣告的部份有3 個浮點值,分別代表Local
的x, y, z 軸向的速度值。
 /* 功能: 持續執行(旋轉自身軸向) */ :這個功能主要是先
宣告各軸向的旋轉值是每秒多少的數值, 然後再使用
transform.Rotate 語法來持續地旋轉物件。
 這裡要注意的重點是transform.Rotate(x, y, z),當我們需要
移動、旋轉、縮放物件時,就可以使用transform 語法來設計
我們需要的行為。
 了解鑽石旋轉功能腳本的
內容之後,我們要開始製
作魔法鑽石,首先我們回
到場景,找到模型資料夾
中的MyDiamond 模型,將
它拖曳至場景中。
賦予腳本
 由於鑽石預設是預製物的型態,在賦予腳本的時候,會出現預
製物連結關係中斷的訊息,這是正常的訊息,點擊Continue 繼
續下一步。
 附加腳本之後,在屬性欄中可以看到宣告出來的 3 個數值,我
們希望它在執行時,沿著Y 軸旋轉,也就是像跳芭蕾舞一樣地
旋轉,所以我們將Y 軸的速度值增加。
 設定好數值之後,執行檢視魔法鑽石的動態,如果一切正常
的話,就會沿著 Y 軸旋轉囉!
執行時鑽石沿著Y 軸旋轉
 除了附加旋轉腳本之外,由於
在主角碰撞的腳本中,會利用
標籤來辨識鑽石,因此在做成
預製物之前,我們還要幫鑽石
加上一個標籤。
 選取鑽石後,在屬性欄的最上
方,點擊 Tag 下拉式選單,並
點選最下面的 Add Tag來呼叫
標籤管理員。
呼叫標籤管理員
 呼叫出標籤管理員之後,展開最上方的Tags 選項,裡面的Size
代表的是數量,在沒有定義內容的Element 右方點擊編輯,並
輸入Tag_Diamond,注意大小寫要正確。
 這個地方可以預先定義各種不同的標籤來為單一物件或是群組
物件提供辨別的功能。
新增一個標籤
 新增一個標籤之後,點選鑽石,在屬性欄中再點擊一次下拉式
選單,裡面會出現剛才所設定的標籤,點擊選取之後,就代表
鑽石被套用了這個標籤。
 最後我們找到屬性欄中的碰撞器,將Mesh Collider中的Convex
勾選起來,Convex 會將碰撞器沿著模型頂點的最外層作變形
包覆,可防止模型本身本來就破面或其它因素而造成碰撞時的
穿透產生。
勾選Convex
 所有的設定都設置好了之後,接下來將鑽石作成預製物,在
7.Prefabs 資料夾上按右鍵 –> Create –> Prefab 建立一個空
的預製物容器。
取名叫 MyDiamond
 建立完成後將預製物容器命名
,此時它是白色的,代表是空
的,將階層視窗中的鑽石拖曳
至預製物容器。
建立預製物
 當我們完成預製物之後,代表鑽石的部份已經完成,接下來我
們來練習第二個部份,也就是主角碰撞偵測的部份,首先我們
打開第五號腳本_05_Collision_DiamondGet,Double-Click 呼叫
Mono 開啟文件並查看腳本內容。
 鑽石獲取腳本說明:這個腳本的內容主要是透過物理的碰撞來
消除鑽石、增加獲取數值並播放音效,達到收集鑽石的效果。
 /* 變數宣告 */:宣告的部份有獲取時的聲音、及獲取的數量
,這裡要注意一點,獲取數量的值採用了static var 靜態全域變
數來宣告,此種變數可以被其它腳本所存取,因此我們後續可
以從其它腳本來連結這個數值。
 /* 功能: 遊戲初始化(將鑽石獲取數量歸零)*/:Start 函式
會在腳本啟動時,在任何持續的函式執行前,先執行一次,也
可以說是腳本執行後,第一個執行的函式,但是前提是此腳本
必須是啟用的狀態。
 由於遊戲有可能會直接重玩,因此我們不能將數值留著,利用
Start 函式在場景每次載入時,將獲取的數值歸零。
 /* 功能: 角色碰撞(角色必須帶有CharacterController)*/:
這個部份的碰撞和開門碰撞是一樣的,不同的是這一次是撞
鑽石,而後續的動作是將獲取數量加1 –> 播放音效 –> 刪
除鑽石。
 這裡要注意的是Destroy 語法,我們常常會用Destroy 語法來
消除物件,後方的括號裡代表的是刪除的物件,還可以再加
上刪除的時間來延遲消除,比如說 Destroy(刪除的物件, 5)
,這樣就代表5 秒之後才刪除它。
 /* 附加腳本時自動生成AudioSource 元件*/ :最後一行則是
一個自動生成元件的語法,讓我們在附加腳本時,就自動在
該物件上生成一個AudioSource 元件
 將獲取鑽石腳本附加到大叔身上。
附加獲取鑽石腳本
 附加腳本之後,在屬性欄中賦予獲取音效。
賦予獲取音效
 設置完成後,我們來執行測試一下,控制大叔往鑽石的方向走
去。
 如果設置正常的話,當大叔碰到鑽石時,鑽石會消失,同時聽
見獲取的音效。
鑽石我來啦!
獲取鑽石成功!
6-6 道具數量顯示(GUI)與開門功能結合
 成功地收集到鑽石之後,接下來我們利用全域變數的特性,將
鑽石獲取的數量成為開門條件的一部份,換句話說,讓我們可
以限制,必須獲得了幾顆鑽石才能開門。
 第一個部份,我們利用GUI 將獲取鑽石的數量顯示出來,首先
我們打開第六號腳本_06_Display_DiamondGet,Double-Click
呼叫Mono 開啟文件並查看腳本內容。
開啟鑽石數量顯示腳本
 鑽石數量顯示腳本說明:這個腳本的內容主要是透過陣列的方
式讓使用者介面(GUI)來動態地同步顯示鑽石的數量與相對
應的圖像,也就是說,當大叔獲得一顆魔法鑽石,介面上就會
亮起一個鑽石的圖像,以此類推。
 /* 變數宣告 */:這裡宣告了一個介面用的鑽石圖,類型是2D
圖像陣列,這裡要注意的就是宣告類型,當我們以陣列的方式
來宣告時,我們就可以先定義各個陣列數字所對應的圖片是什
麼,當陣列的數字變化時,所對應的圖片也會跟著變化,達到
即時動態切換圖片的效果。
 /* 功能: 持續執行(動態變換圖檔)*/:這個功能的意思就是
,使用另一個腳本_05_Collision_DiamondGet.GetCount 中的全
域變數GetCount 的數值來輸入guiTexture 陣列中的數字,進
而達到切換圖片的效果。
 也就是說,當大叔吃到一顆鑽石,獲取的數字就會變成1,同
時也代表著圖像陣列的數字是1,而介面圖像的圖檔就會自動
切換成1 這個數字所對應的圖。透過這種方式,我們可以用少
許程式碼就達到即時切換圖片的效果,相當有效率!
 大致上了解了鑽石數量顯示腳本的內容之後,接下來我們透過
實際練習就能更清楚地了解運作的方式。
 首先,我們要先建立一個介面圖像(GUI Texture),通常我
們都是直接從選單裡直接建立,記住一個小技巧,先選取圖像
之後再建立GUI Texture,Unity 就會自動幫我們調整好大小還
有命名,相當方便。
 接著先到4.Texture 資料夾中,找到我們要建立的GUI 圖像所
要用的圖,總共有01234 共5 張圖,各代表了陣列的數字所
對應的圖檔。
 由於圖片在匯入Unity 時,為了節省效能,預設是Texture 型
態,Texture 型態會隨著攝影機及其它因素來改變解析度,因
此,在建立之前,先將圖檔的屬性改成GUI 型態,確保圖片的
顯示品質。
 更改完圖片型態之後,在選取著圖片的狀態下,找到上方選單
,GameObject –>Create Other –> GUI Texture 來建立介面
圖像。
(1)
(2)
建立前記得先選圖片喔!
 建立了介面圖像之後,我們就會在畫面上看到鑽石的圖像,透
過屬性欄裡的Transform 來調整位置,透過GUI Texture 的屬
性來調整偏移量及大小,在調整的時候要注意單位。
 由於GUI Texture 的位置表示是畫面顯示的比例,因此在
Transform 中,它的數字是用0~1 之間來表示,換句話說,X
軸的0 就代表著圖像是位於畫面的最左邊,1就代表著圖像是
位於畫面的最右邊,0.5 就代表位於畫面的中間,Y 軸的表示
方式也是一樣,以此類推。
 再來找到GUI Texture 元件的屬性欄,Pixel Inset 是用來調整
偏移量,這裡可不用調整,而Width 及Height 則是用來調整圖
像的寬及高,將其調整至適當的大小及位置。
 調整完成後的介面圖像應如圖中所示。 (執行完後)
魔法鑽石介面圖像
 調整完成後,將鑽石顯示腳本附加到鑽石介面圖像上。
賦予動態顯示功能
 附加之後,陣列預設的數量是0,所以我們先將陣列設置為5,
設置完成之後,下方會出現Element0 ~ 4 的欄位,將各個數字
所對應的圖片賦予上去。
定義各陣列數字的圖片
設置完成之後,我們就可
以來執行測試啦!,在執
行時,還未獲取到任何魔
法鑽石前,也就是鑽石的
獲取數是0 的時候,圖像
顯示著陣列0 的圖片如圖
中所示。
當我們拖大叔去撞鑽石之
後,畫面上的介面圖像就
會隨著鑽石的獲取量來切
換對應的陣列圖片。
 增加了鑽石之後,
回到大叔身上的開
門腳本,將鑽石的
需求量調整至3,也
就是說,維京大叔
必需要獲得3 顆魔
法鑽石才能將門打
開。
調整需求量
 設置完成之後,執行測試,正常的話, 鑽石的需求量不足時
,無法開門。
鑽石不夠 ~ 老婆不開門!
 當鑽石數量足夠,門才會打開,就代表所有的功能運作都正
常。
開門囉!
 以上就是開門、獲取魔法寶石、鑽石介面以及完整功能串接
的練習,我們對於如何在Unity中創造遊戲行為也有了初步的
認識,接下來我們來練習其它不同類型的遊戲行為。

More Related Content

Featured

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 

Featured (20)

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 

第六章