程式設計的「變數」用於儲存變動的資料,實際上可視為一種「容器」,程式的執行階段可以儲存數值、文字、布林值。 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 數位學習網版權所有 ~ |