1. 程式人生 > >unity開發HTC VIVE虛擬現實應用入坑筆記(三)——InteractionSystem

unity開發HTC VIVE虛擬現實應用入坑筆記(三)——InteractionSystem

新版的SteamVR外掛內建了InteractionSystem示例,能夠實現包括跳躍、物體抓取、觸碰式UI等基礎功能,不需要寫啥程式碼,就能實現一些簡單的VR功能,著實是一大福利,原來一直使用的VRTK,現在有這個系統後,基本不用了,有興趣的朋友可以自行了解。
InteractionSystem的主要預設都放在SteamVR->InteractionSystem目錄下
這裡寫圖片描述
下面簡單介紹幾個常用的功能設定
(1)實現跳躍功能
1、這個系統使用的VR相機預設與基礎預設不太一樣,在InteractionSystem->Core->Prefabs目錄下找到Player預設,將這個預設拖拽到新建場景中。
2、下面介紹一下跳躍功能依賴的核心預設,檢視InteractionSystem->Teleport->Prefabs目錄。
這裡寫圖片描述


Teleporting
Teleporting預設是跳躍系統的核心預設,必須拖拽一個到你的場景中,這樣,通過點選你手柄的TouchPad按鍵,就能出現類似於SteamVR自帶空間裡的綠色的跳躍射線。
TeleportArea
TeleportArea預設的作用是指定可跳躍的區域,檢視預設上掛載的指令碼,其中Locked屬性設定區域是否鎖定,勾選Locked之後,區域將設定為不可跳躍。
這裡寫圖片描述
TeleportPoint
Telepoint預設是一個可跳躍的點,和The Lab案例中的跳躍點一樣。
這裡寫圖片描述
其中幾個關鍵屬性:
Locked:設定跳躍是否鎖定
TelePort Type:兩個屬性,一個是Move To Location,移動到目標位置。第二個是Swich to New scene,跳轉到新場景,如果選擇第二個屬性,則需要在【Switch To Scene】屬性上填寫跳轉的場景名稱;
Title:跳躍點的提示文字,輸入顯示。

在你的場景中,自行設定上述幾個元件,就能夠實現簡單的跳躍功能了。

(2)實現物品抓取功能
實現物體拾取功能,只需要在物體上新增【Throwable】指令碼即可實現。
在場景中建立一個cube,選擇cube,在Inspector檢視中,點選“Add Component”,搜尋“Throwable”,新增指令碼,將自動新增要求其他指令碼。
這裡寫圖片描述

(3)手柄事件響應
上一篇文章有介紹過如何使用程式碼獲取手柄按鈕點選事件,但是InteractionSystem裡的VR相機預設與[CameraRig]有一點不同,我自己是採用如下程式碼來獲取的,僅作參考。

    void FixedUpdate()
    {
        Hand hand = GetComponent<Hand> ();
//Grip鍵 if (hand.controller != null&&hand.controller.GetPressDown( Valve.VR.EVRButtonId.k_EButton_Grip)) { Debug.Log("Grip按鍵!"); } //Menu按鍵 if (hand.controller != null&&hand.controller.GetPressDown( Valve.VR.EVRButtonId.k_EButton_ApplicationMenu)) { Debug.Log("Menu按鍵!"); } //Trigger按鍵 if (hand.controller != null && hand.controller.GetPressDown (Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger)) { Debug.Log ("Trigger按鍵"); } //TouchPad按鍵 if (hand.controller != null && hand.controller.GetPressDown (Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad)) { Debug.Log ("TouchPad按鍵"); } }

EVRButtonId類下還有其他按鈕事件,可以自己試試能否響應,這裡就不一一列舉了。將上述指令碼掛載在Player下,Hand物體上,即可實現事件的監控。
這裡寫圖片描述