PlayMaker 教學

CG 數位學習網 > PlayMaker 教學



程式設計的「變數」用於儲存變動的資料,實際上可視為一種「容器」,程式的執行階段可以儲存數值、文字、布林值。

Unity 遊戲引擎的變數除了上述的資料型態以外,還可以儲存遊戲物件、顏色、音訊片段…等,使用上擁有很大的彈性。

遊戲製作者若是不會使用「變數」,就無法製作有複雜度的功能,實際上是很難製作出好玩與耐玩的遊戲。

使用 PlayMaker 製作玩家可操作的遊戲角色,在場景中建立一個膠囊物件,重新命名為「Player」。

執行 [ Component > Physics > Character Controller ] 套件角色控制器元件。

 

若出現提示訊息表示將會置換現有的碰撞器。

開啟 PlayMaker 編輯器,按滑鼠右鍵並執行 Add New FSM 添加狀態機。

 

將預設狀態「State 1」重新命名為「Walk」代表走路的狀態。開啟 Actions 對話框。

 

選擇 [ Input > Get Axis Vector ] 然後按下 Add Action To State 按鈕。

 

出現紅色的驚嘆號警告標示,因為有欄位必須要設定。

 

設定 Relative To = Main Camera

此外 Store Vector 需要先有變數,切換到 Variables 變數標籤,然後在 New Variable 欄位輸入「Movement」,變數型態選擇「Vector3」。

 

按下 Add 按鈕即可建立 Movement 變數。

 

設定 Move Vector = Movement

 

透過 Actions 對話框,選擇 [ Character > Controller Simple Move ] 然後按下 Add Action To State 按鈕。

 

 

Move Vector 移動向量從下拉式選單中,選擇 Movement 變數。

 

按下 Play 按鈕測試,膠囊物件已經可以使用鍵盤的方向鍵移動,並可調整物件的移動速度。

 

測試後就會發現一個問題,膠囊物件移動時並不會面對前進的方向。

透過 Actions 對話框,選擇 [ Transform > Smooth Look At Direction ] 然後按下 Add Action To State 按鈕。

設定 Target Direction = Movement 控制角色移動時平順的轉動到移動的方向。

選取場景中的 Main Camera 攝影機,透過 PlayMaker 編輯器,按滑鼠右鍵並執行 Add New FSM 添加狀態機。

將預設狀態方塊重新命名為「LookAt」,此狀態的功能是讓攝影機注視代表玩家的膠囊物件。

透過 Actions 對話框,選擇 [ Transform > Smooth Look At ] 然後按下 Add Action To State 按鈕。

然後將「Player」物件指定到 Smooth Look At 的目標物件 ( Target Object ) 欄位,讓攝影機注視玩家。

 

PlayMaker 全域變數

全域變數的使用方法與一般變數很類似,但是全域變數可以從其他地方讀取與修改,使用上更有彈性。

本教學將會示範製作一個簡單遊戲,玩家吃加分與扣分方塊的遊戲(綠色方塊加分、紅色方塊扣分)。

開啟 Globals 視窗,輸入全域變數名稱並選擇變數型態,然後按下 Add 按鈕。

 

新增 playerScore_i 與 playerScore_s 全域變數,分別將變數的資料型態設為 Int 整數與 String 字串。

 

建立一個當作加分的方塊 (Cube),新增狀態機,並且在預設的 State 1 狀態加上 Trigger Event 觸發器事件。

新增 pick-up 事件(得到加分物品),當事件發生時轉變到 State 2 狀態。加上 Rotate 讓加分方塊旋轉,可以讓方塊在場景中更明顯。

 

接著在 State 2 狀態加入 Int Add 動作(位於 Action Browser 的 Math > Int Add),增加 playerScore_i 全域變數的數值。

若要製作扣分方塊,只需要在 Add 欄位填入負值(例如 -100)即可。玩家吃到這個方塊後使用 Destroy Self 動作讓方塊消失。

 

使用複製的方式或是預製物件,將多個加分方塊與扣分方塊放在遊戲場景的適當位置。

 

場景中建立一個新的空遊戲物件,命名為「ScoreManager」,ScoreManager 物件用於管理玩家分數。

將初始狀態命名為「Setup」,用於重置全域變數的初始值,新增動作 Set Int Value 設定變數數值。

 

加入 Convert Int To String 此動作可以將整數轉換為字串。設定:

Int Variable = PlayerScore_i

String Variable = PlayerScore_s

 

然後加入 Set GUI Text 動作,不過此物件因為沒有 GUIText 元件會出現警告訊息,您可以按一下訊息來加入需要的 GUIText 元件。

 

為此物件加上 GUIText 元件,讓玩家的分數能夠顯示在遊戲畫面。

Text 原本是文字欄位,勾選旁邊的 User Varibale 選項,若發現沒有項目可選,表示沒有 String 字串型態的變數。

注意!Convert Int To String 與 Set GUI Text 動作需要持續執行,因此必須勾選 Every Frame 使在每個影格執行。

 

玩家吃到 3 個加分方塊,右下方的分數顯示 300 分。

 

玩家吃到 1 個加分方塊與 2 個扣分方塊,右下方的分數顯示 -300 分。



~ CG 數位學習網版權所有 ~