CG 數位學習網 > 使用 Unity 製作吃金幣的遊戲(搭配 VR-Step 套件) 首先從 AssetStore 資源商店匯入 VR-Step 資源包。 切換到 Android 平台,開啟 PlayerSettings 設定 Bundle Identifier 。
遊戲中的取得物品是基本的功能,例如補血、獲得武器等。此教學介紹如過碰撞器或觸發器判定玩家是否碰到特定物件。 首先使用圓柱體製作一個金幣的模型。
使用 Scale 縮放工具將圓柱體壓成金幣形狀,並且重新命名為「Gold」。
移除 Capsule Collider 膠囊碰撞器,然後套用 Box Collider 方塊碰撞器,因為 Box Collider 對於執行效能比較有利。勾選 Is Trigger 設定成觸發器。
建立一個「Materials」資料夾,然後新增 Gold、Sliver材質,用於製作金幣與銀幣。
目前場景上的金幣在遊戲畫面上並不明顯。 建立Coin.cs腳本,用於設定金幣與銀幣的行為,先製作原地轉動的效果。
下圖是Coin.cs腳本的程式碼:
使用transform.Rotate( x, y, z ) 指令可以讓遊戲物件轉動,將 Coin.cs 腳本套用到金幣,設定 Speed 參數調整金幣的旋轉速度。 注意!因為金幣是圓柱體壓平後轉 90 度製作的,如果轉動的方向不同,此處 xyz 軸的對應也會改變, 例如上圖是 x 軸旋轉,但是您的金幣可能需要改為 z 軸旋轉,請自行修改測試。
開啟 [ VR-Step > Prefabs ] 資料夾,然後將 GoogleVRController 預製物件拖曳到場景。
移除場景中原有的Main Camera 攝影機。 如果MainCamera攝影機沒有移除,遊戲畫面除了出現左右眼的畫面,也將會同時出現背景的畫面(如下圖),讓玩家感到困擾。
移除或停用 Main Camera 攝影機,背景不會顯示影像。
目前玩家只能在場景上走動,但是無法吃掉金幣。我們需要玩家碰到金幣時,能夠立即刪除金幣,讓玩家認為金幣已經被吃掉。 建立一個 Collect.cs 腳本,下圖是腳本的程式碼:
此腳本套用到GoogleVRController的子物件PlayerCollider上,因為角色的 Collider 碰撞器在此物件上,遊戲執行時需要判斷玩家是否碰到金幣。
測試遊戲以確認玩家碰到金幣時可被刪除。修改 Collect.cs 腳本,變數 playerScore 記錄玩家分數,碰到金幣或銀幣時將會增加 100 分。
吃掉金幣或銀幣時,變數 PlayerScore 增加分數,但目前分數並不會顯示在遊戲畫面,必須透過 Inspector 屬性編輯器檢示變數的數值變化。
使用 Duplicate 複製金幣,然後套用剛才製作的 Sliver 材質製作一個銀幣。
為了判定吃到「金幣」或「銀幣」,使用 Add Tag 套用標籤。
目前並沒有需要的 Tag 標籤,在 Tags 清單按下 + 按鈕,然後在 New Tag Name 輸入「Gold」,選取場景中的金幣,使用 Tag 選單套用 Gold 標籤。
使用相同步驟,為銀幣套用剛建立的 Sliver 標籤。
修改 Collect.cs 腳本,使用 if 條件判斷式,碰撞時如果是金幣,變數 playerScore 加 100 分,如果是銀幣,則變數 playerScore 加 80 分。
最後需要將玩家的分數顯示在遊戲畫面上,執行 [ GameObject> UI > Text ] 建立一個文字物件。 選取物件,然後將 Text 拖曳到 Player Score UI 欄位。 修改Collect.cs腳本,在增加分數的程式碼下方加入: playerScoreUI.text = playerScore.ToString (); 也就是將玩家分數放到 UI 文字顯示出來。
|