1. 程式人生 > 程式設計 >如何在Unity中使用VR暴風魔鏡藍芽手柄

如何在Unity中使用VR暴風魔鏡藍芽手柄

目錄
  • 一、藍芽手柄按鍵的響應
  • 二、UGUI的事件檢測

一、藍芽手柄按鍵的響應

在暴風魔鏡的官網下載了最新的SDK後匯入Unity專案,發現SDK中的DEMO全部是非手柄控制的,然後只能參照著SDK裡面的介面說明文件自己研究~~結果發現介面文件非一般的坑,一開始是直接在MojingInputManager.cs裡面直接填充,直到最後才發現用IntegrateInputManager.prefab替換場景中原有的MojingInputManager.prefab以後就可以跟檢測Unity的輸入一樣檢測到手柄的輸入了,以下為原始碼(詳情可直接參考介面文件3.9節):

ZnaELDiM
 //搖桿上移
        if (CrossPlatformInputManager.GetButtonDown("UP"))          
	    {
	        Debug.LogWarning("Up_Get");
            up = 1;
	    }
        //搖桿下移
        if (CrossPlatformInputManager.GetButtonDown("DOWN"))
        {
            Debug.LogWarning("Down_Get");
            up = -1;
        }
        //搖桿右移
        if (CrossPlatformInputManager.GetButtonDown("RIGHT"))
        {
            Debug.LogWarning("Right_Get");
            right = 1;
        }
        //搖桿左移
        if (CrossPlatformInputManager.GetButtonDown("LEFT"))
        {
            Debug.LogWarning("Left_Get");
            right = -1;
        }
        //搖桿回到中間位置
        if (CrossPlatformInputManager.GetButton("CENTER"))
        {
            Debug.LogWarning("CENTER_Get");
            upwww.cppcns.com
= 0; right = 0; } //按下確定(OK)鍵 if (CrossPlatformInputManager.GetButtonDown("OK")) { Debug.LogWarning("OK_Get"); } //按下取消鍵 if (CrossPlatformInputManager.GetButtonDown("C")) { Debug.LogWarning("Cancle_Get"); } //按下選單鍵 if (CrossPlatformInputManager.GetButtonDown("MENU")) { Debug.LogWarning("MENU_Get"); }

二、UGUI的事件檢測

VR專案中最坑的地方就是原有的UI都不再適應,雖說很多SDK的官方都說只要把UI設定成世界座標即可,但是原有的UI都是跟隨視角移動的,改成世界座標後要多奇怪有多奇怪,所以為了更加的和諧,還是針對VR設計一套UI比較好~(以上僅代表個人觀點,不喜勿噴~ )。 OK,現在假設已經準備好UI的素材了,那麼開始搞起~假設沒有什麼其他的特殊要求,在加入Canvas後在屬性面板修改如下兩個引數即可

第一個Render Mode就是渲染模式了~將其改為World Space,第二個Event Camera為事件響應的攝像機,在沒有手動新增攝像機的情況下,場景中應該會有如下三個攝像機:

VR模式效果如下

http://www.cppcns.com

在停用左右眼攝像機,只打開主攝像機時效果如下
主攝像機在非VR模式時會開啟,在VR模式下預設關閉。Canvas裡面響應的攝像機就選擇主攝像機即可(如果沒有跟UI之間的互動此處也可不必設定),如此這般就可以在VR場景中看到Canvas裡面的UI了。
若需求裡面有跟UI之間的互動(比如點選按鈕等等),那麼Canvas的Event Camera必須設定,然後在EventSystem上面掛載SDK裡面的GazeInputModule如下圖所示

其中Cursor裡面的物體是剛剛和那三個鏡頭廝混在一起的準星,觸發操作全靠它了~ 如果僅僅是這樣還是不行的~做到這一步在準星移動到BUTTON上面的時候只有懸浮效果(即高亮),點選遙控器的OK鍵的時候是沒有任何響應的(本想參考官方DEMO找到應對方法的結果DEMO全部不是手柄控制的,所以只能自己想辦法解決了o(╯□╰)o),在嘗試了多種方法之後,最終找到的可行方法是~~修改GazeInputModule指令碼,將它的點選檢測裡面加上CrossPlatformInputManager.GetButtonDown("OK")就OK啦~

以上就是如何在Unity中使用暴風魔鏡藍芽手柄的詳細內容,更多關於在Unity中使用暴風魔鏡藍芽手柄的資料請關注我們其它相關文章!