如何在Unity中使用VR暴風(fēng)魔鏡藍牙手柄
一、藍牙手柄按鍵的響應(yīng)
在暴風(fēng)魔鏡的官網(wǎng)下載了最新的SDK后導(dǎo)入Unity項目,發(fā)現(xiàn)SDK中的DEMO全部是非手柄控制的,然后只能參照著SDK里面的接口說明文檔自己研究~~結(jié)果發(fā)現(xiàn)接口文檔非一般的坑,一開始是直接在MojingInputManager.cs里面直接填充,直到最后才發(fā)現(xiàn)用IntegrateInputManager.prefab替換場景中原有的MojingInputManager.prefab以后就可以跟檢測Unity的輸入一樣檢測到手柄的輸入了,以下為源碼(詳情可直接參考接口文檔3.9節(jié)):
//搖桿上移 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"); up = 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都不再適應(yīng),雖說很多SDK的官方都說只要把UI設(shè)置成世界坐標(biāo)即可,但是原有的UI都是跟隨視角移動的,改成世界坐標(biāo)后要多奇怪有多奇怪,所以為了更加的和諧,還是針對VR設(shè)計一套UI比較好~(以上僅代表個人觀點,不喜勿噴~ )。 OK,現(xiàn)在假設(shè)已經(jīng)準(zhǔn)備好UI的素材了,那么開始搞起~假設(shè)沒有什么其他的特殊要求,在加入Canvas后在屬性面板修改如下兩個參數(shù)即可
第一個Render Mode就是渲染模式了~將其改為World Space,第二個Event Camera為事件響應(yīng)的攝像機,在沒有手動添加攝像機的情況下,場景中應(yīng)該會有如下三個攝像機:
VR模式效果如下
在停用左右眼攝像機,只打開主攝像機時效果如下
主攝像機在非VR模式時會打開,在VR模式下默認(rèn)關(guān)閉。Canvas里面響應(yīng)的攝像機就選擇主攝像機即可(如果沒有跟UI之間的交互此處也可不必設(shè)置),如此這般就可以在VR場景中看到Canvas里面的UI了。
若需求里面有跟UI之間的交互(比如點擊按鈕等等),那么Canvas的Event Camera必須設(shè)置,然后在EventSystem上面掛載SDK里面的GazeInputModule腳本如下圖所示
其中Cursor里面的物體是剛剛和那三個鏡頭廝混在一起的準(zhǔn)星,觸發(fā)操作全靠它了~ 如果僅僅是這樣還是不行的~做到這一步在準(zhǔn)星移動到BUTTON上面的時候只有懸浮效果(即高亮),點擊遙控器的OK鍵的時候是沒有任何響應(yīng)的(本想?yún)⒖脊俜紻EMO找到應(yīng)對方法的···結(jié)果DEMO全部不是手柄控制的,所以只能自己想辦法解決了o(╯□╰)o),在嘗試了多種方法之后,最終找到的可行方法是~~修改GazeInputModule腳本,將它的點擊檢測里面加上CrossPlatformInputManager.GetButtonDown("OK")就OK啦~
以上就是如何在Unity中使用暴風(fēng)魔鏡藍牙手柄的詳細(xì)內(nèi)容,更多關(guān)于在Unity中使用暴風(fēng)魔鏡藍牙手柄的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用Git工具實現(xiàn)上傳本地項目到GitHub的方法
這篇文章主要介紹了使用Git工具實現(xiàn)上傳本地項目到GitHub的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10Scratch3.0二次開發(fā)之windows環(huán)境下打包成exe的流程
今天通過本文給大家分享Scratch3.0二次開發(fā)之windows環(huán)境下打包成exe的詳細(xì)流程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-08-08vscode?debug設(shè)置參數(shù)與環(huán)境變量圖文詳解
這篇文章主要給大家介紹了關(guān)于vscode?debug設(shè)置參數(shù)與環(huán)境變量的相關(guān)資料,文中通過圖文以及代碼示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09