開發一個最簡單的Cardboard虛擬現實應用(四)做一個Cardboard第一人稱控制器

兵形東華發表於2015-12-06

[開源互助-原創文章,轉載請說明出處]
第三帖中已經建立了一個cardboard自帶的demo應用,但它是不能移動的,玩家只能站在原地,通過頭部轉動來觀察四周,除此之外,玩家並沒有更多的手段與遊戲場景進行互動。本帖將描述如何使用藍芽手柄實現玩家的位置移動,包括前、後、左、右,跳躍等動作。
第一步:首先我們得有一個第一人稱角色在場景中,因此,匯入UNITY自帶的第一人稱模型包:

匯入場景後,在項止瀏覽視窗中:

第二步:將第一人稱控制器下的prefab拉入到場景中:

如下:

第三步:移除場景中第一人稱控制器自身的maincamera,同時將cardboardmain拉到該第一人稱控制器的下面:

稍微調整cardboardmain在父物體中的座標,使其移到第一人稱的上端:

第四步:開始修改第一人稱控制器的指令碼,有以下幾點需要修改:

1、之前第一人稱的視線是跟隨滑鼠移動,現在要使其跟隨cardboard跟蹤到的頭部姿態的運動而移動;

2、之前第一人稱的前後左右移動是由鍵盤上的控鍵控制,現在要由藍芽手柄上的按鍵來控制;

動手:

1、使第一人稱的視線其跟隨cardboard跟蹤到的頭部姿態的運動而移動;

在FirstPersonController.cs中的update函式中去掉rotateview(這裡就是實現滑鼠控制):

同時初始化也去掉:

在Cardboard\Scripts\CardboardHead.cs中的UpdateHead函式中,根據獲取到的頭部轉動資料來控制第一人稱的Y軸轉向:

 

這樣就實現了使用cardboard的頭部轉動資料來控制第一人稱頭部轉動的效果。

2、使用藍芽手柄上的按鍵來控制第一人稱的前後左右移動;

藍芽手柄被android系統識別手,是作為一種鍵盤裝置來對待的,也就是說,我們無需再為其開發專用的外掛,而unity3d中已為其設計了相應的按鍵事件來響應藍芽手柄上按鍵的按下,因此,首先要弄清手上的藍芽手柄的各個按鍵都對應UNITY3D中哪個按鍵事件,可以寫一個小demo,用來將按下的按鍵值顯示在螢幕上。

我的藍芽手柄在unity3d中的鍵值對映關係如下:

有了以上對映關係後,再找到程式碼中控制第一人稱移動和跳躍的地方,修改之:

在FirstPersonController.cs中

在FirstPersonController.cs中

一般遊戲中會使用手柄左前端上面的按鍵來控制角色的走動或者跑動,修改如下:

在FirstPersonController.cs中

這樣,就實現了前面提到的兩個目標。

再編一個apk試試吧,enjoy it!

 

相關文章