1. 程式人生 > >Unity Steam_VR 開發工具外掛 VRTK自帶案例分析(第二部分)

Unity Steam_VR 開發工具外掛 VRTK自帶案例分析(第二部分)

轉載至https://www.cnblogs.com/zerotoinfinity/p/6485556.html
 

DEMO 025_Controls_Overview

互動控制器: 真實版 UI 元素。所有型別的控制器都繼承自VRTK_Control。 

第一種互動控制器:按鈕VRTK_Button

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

把這個指令碼新增到遊戲物體上,可以讓這個遊戲物體表現的和真實世界的按鈕一樣的物理特性,玩家通過觸碰它,可以被按下,按鈕按下時的移動方向可以自由設定,也可以讓指令碼自由偵測按鈕周圍的碰撞環境來確定按下的運動方向。

監聽按鈕按下的事件有兩種方式:1 在Event OnPush 事件list 新增一個像UGUI 或 NGUI那樣,當事件發生時,觸發指令碼中的方法。

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

另一種是用程式碼的方式:

GetComponent<</span>VRTK_Button>().events.OnPush.AddListener(handlePush);

HandlePush是事件觸發時呼叫的方法。

關於按鈕移動方向的設定

該按鈕的移動方向是區域性座標的X軸,圖中黃線的就是可移動的方向。

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

 Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

上圖是有指令碼自由偵測的移動方向

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

指令碼中connented to 是讓按鈕作為哪個物體的子物體,跟隨之移動

第二種互動 滑調

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

引數和UI的滑調引數意義相似,規定了最小最大值。注意,滑調的左右移動的極限位置,如果Detect Min Max 打鉤,即自動識別需要滑調左右有碰撞體作為邊界如第一張滑調圖片顯示的ColliderBox。

獲取改滑調的當前數值 

       Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

監聽defaultEvent.OnValueChanged.AddListener

GetValue()是當前數值,GetNormalizedValue()是百分比數值

滑調事件有兩個傳入引數,第一個是當前slider 的當前滑動數值,第二個是歸一化的當前滑動數值,即百分比:0-1

第三種 : 旋鈕

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

類似電風扇的開關

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

Direction 是旋轉的軸向。事件和slider 一樣。  

其他互動控制器 :  寶箱  ,門 ,槓桿

Demo 026_Controller_ForceHoldObject

手柄握住的物體和其他物體碰撞是,震動反饋

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

DEMO 027_CameraRig_TeleportByModelVillage

觸控沙盤中目標位置的模型,移動到環境中對應的傳送位置

DEMO 028_ CameraRig_RoomExtender

暫時沒看到新的東西

Demo 029_Controller_Tooltips

提示器

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

 DEMO 030_Controls_RadialTouchpadMenu

 未研究

 DEMO 031_CameraRig_HeadsetGazePointer

 把傳送拋物線的起點放到頭部,而不是之前放到手柄處的做法,  功能沒什麼不同

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

DEMO 032_Controller_CustomControllerModel

用自定義的手來代替手柄模型

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

取消手柄的渲染元件

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

並且監聽手柄輸入事件來控制手的動作

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

 DEMO 033_CameraRig_TeleportingInNavMesh

在導航(navigation)物體上傳送。和以往的普通傳送設定無區別。唯一有影響的是不能傳送到navimesh 邊界附近。 

DEMO 034_Controls_InteractingWithUnityUI

和UI元素互動

首先需要在手柄上新增

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

引數 

activation Mode:和UI互動需要一個專門的鐳射指標   這個引數是鐳射顯示的開關條件

Attempt click on deactivate:即使鐳射指標未顯示時也可以啟用UI 

Ignore canvas with tag or class:如果目標UI canvas的標籤或添加了該引數名稱的指令碼名稱時,忽略對它的操作

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2   Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

注意:是在canvas 元件的遊戲物體上的tag和新增指令碼 

監聽UI pointer 的互動事件 

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

事件引數

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

DEMO 035_Controller_OpacityAndHighlighting

物體高亮顯示時,變透明

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

Alpha 值為0

DEMO 036_Controller_CustomCompoundPointer

自定義拋物線模型元素

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

DEMO 037_CameraRig_ClimbingFalling

攀登移動

 Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

可攀登物體

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

DEMO  038_CameraRig_DashTeleport

移動傳送和之前位置傳送的方式不同,這是模擬行走的過程到目的地,在CameraRig預設體上

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

DEMO 039_CameraRig_AdaptiveQuality

自適應渲染螢幕畫素等級,這個和valve 提供的The lab 渲染外掛一個自適應渲染質量非常相似

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

相機位置模擬器

Unity <wbr>Steam_VR開發工具外掛---VRTK <wbr>自帶案例分析Part2

這個指令碼用鍵盤來控制位移來代替眼鏡控制頭部的攝像機位置,測試時會方便很多。