DEMO 025_Controls_Overview
交互控制器: 真實版 UI 元素。所有類型的控制器都繼承自VRTK_Control。
第一種交互控制器:按鈕VRTK_Button
把這個腳本添加到游戲物體上,可以讓這個游戲物體表現的和真實世界的按鈕一樣的物理特性,玩家通過觸碰它,可以被按下,按鈕按下時的移動方向可以自由設置,也可以讓腳本自由偵測按鈕周圍的碰撞環境來確定按下的運動方向。
監聽按鈕按下的事件有兩種方式:1 在Event OnPush 事件list 添加一個像UGUI 或 NGUI那樣,當事件發生時,觸發腳本中的方法。
另一種是用代碼的方式:
GetComponent<</span>VRTK_Button>().events.OnPush.AddListener(handlePush);
HandlePush是事件觸發時調用的方法。
關於按鈕移動方向的設置
該按鈕的移動方向是局部坐標的X軸,圖中黃線的就是可移動的方向。
上圖是有腳本自由偵測的移動方向
腳本中connented to 是讓按鈕作為哪個物體的子物體,跟隨之移動
第二種交互 滑調
參數和UI的滑調參數意義相似,規定了最小最大值。注意,滑調的左右移動的極限位置,如果Detect Min Max 打鈎,即自動識別需要滑調左右有碰撞體作為邊界如第一張滑調圖片顯示的ColliderBox。
獲取改滑調的當前數值
監聽defaultEvent.OnValueChanged.AddListener
GetValue()是當前數值,GetNormalizedValue()是百分比數值
滑調事件有兩個傳入參數,第一個是當前slider 的當前滑動數值,第二個是歸一化的當前滑動數值,即百分比:0-1
第三種 : 旋鈕
類似電風扇的開關
Direction 是旋轉的軸向。事件和slider 一樣。
其他交互控制器 : 寶箱 ,門 ,杠桿
Demo 026_Controller_ForceHoldObject
手柄握住的物體和其他物體碰撞是,震動反饋
DEMO 027_CameraRig_TeleportByModelVillage
觸摸沙盤中目標位置的模型,移動到環境中對應的傳送位置
DEMO 028_ CameraRig_RoomExtender
暫時沒看到新的東西
Demo 029_Controller_Tooltips
提示器
DEMO 030_Controls_RadialTouchpadMenu
未研究
DEMO 031_CameraRig_HeadsetGazePointer
把傳送拋物線的起點放到頭部,而不是之前放到手柄處的做法, 功能沒什么不同
DEMO 032_Controller_CustomControllerModel
用自定義的手來代替手柄模型
取消手柄的渲染組件
並且監聽手柄輸入事件來控制手的動作
DEMO 033_CameraRig_TeleportingInNavMesh
在導航(navigation)物體上傳送。和以往的普通傳送設置無區別。唯一有影響的是不能傳送到navimesh 邊界附近。
DEMO 034_Controls_InteractingWithUnityUI
和UI元素交互
首先需要在手柄上添加
參數
activation Mode:和UI交互需要一個專門的激光指針 這個參數是激光顯示的開關條件
Attempt click on deactivate:即使激光指針未顯示時也可以激活UI
Ignore canvas with tag or class:如果目標UI canvas的標簽或添加了該參數名稱的腳本名稱時,忽略對它的操作
注意:是在canvas 組件的游戲物體上的tag和添加腳本
監聽UI pointer 的交互事件
事件參數
DEMO 035_Controller_OpacityAndHighlighting
物體高亮顯示時,變透明
Alpha 值為0
DEMO 036_Controller_CustomCompoundPointer
自定義拋物線模型元素
DEMO 037_CameraRig_ClimbingFalling
攀登移動
可攀登物體
DEMO 038_CameraRig_DashTeleport
移動傳送和之前位置傳送的方式不同,這是模擬行走的過程到目的地,在CameraRig預設體上
DEMO 039_CameraRig_AdaptiveQuality
自適應渲染屏幕像素等級,這個和valve 提供的The lab 渲染插件一個自適應渲染質量非常相似
相機位置模擬器
這個腳本用鍵盤來控制位移來代替眼鏡控制頭部的攝像機位置,測試時會方便很多。