CG 數位學習網 >
Warning: include(ssi_link.htm): failed to open stream: No such file or directory in /raid/vhost/cg.com.tw/www/VR-Step/Content/05.php on line 14

Warning: include(): Failed opening 'ssi_link.htm' for inclusion (include_path='.:/usr/local/php-fpm5.4/lib/php') in /raid/vhost/cg.com.tw/www/VR-Step/Content/05.php on line 14

使用 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 文字顯示出來。