VR——VRTK案例詳解1-16

002_Controller_Events

一、作用。

監測手柄的各種輸入:扳機、觸摸板、側鍵等等。

二、示例。

1.    手柄掛上 VRTK_ControllerEvents

pointerToggleButton:激光指示器打開/關閉的操作的按鈕。

pointerSetButton:用於從指針的光標位置設置目標標記的操作的按鈕。

2.例如按下扳機鍵:註冊按下扳機鍵的事件,按下扳機鍵註冊的方法即可執行,還可以拿到一些具體的參數。

 

 

 

003_Controller_SimplePointer

一、作用。

射線。

二、示例。

1.手柄掛上 VRTK_Pointer     VRTK_StraightPointerRenderer就可以摁下按鍵發出射線,並且把對應的手柄拖進來。

  

可以通過VRTK_DestinationMarker拿到射線指向的點的信息(如下圖),包括距離、目標點的Transform、射線、目標點的世界座標、是否傳送等等。

監聽事件如下

004_CameraRig_BasicTeleport

一、作用。

傳送。

二、示例。

在[VRTK_Scripts]下隨便創建一個空的gameobject,添加VRTK_BasicTeleport腳本。

參數:

(1)傳送時過度顏色。

(2)在基本的傳送腳本上可以改變褪色的閃爍速度,以提供定製的傳送體驗。將速度設置爲0將意味着不會出現褪色的閃爍效果。

(3)在0到32之間的範圍,決定了眨眼轉換的時間長短取決於被傳送的距離。一個值爲0,將不會延遲瞬移瞬移效應在任何距離上,一個值32將延遲瞬移瞬變,即使距離傳送的距離非常接近原來的位置。這可以用來模擬時間花費更長的時間來傳遞用戶的遠程端口。一個值16提供了一個適當的基礎來模擬這個給用戶。

(4)頭部位置:以頭部爲基準,作爲傳送的位置。未打鉤,則是玩家可玩區域的中心位置作爲傳送的目標點。可玩區域不能和遊戲環境交叉,最大化玩家活動空間。

(5)禁止傳送物體的標籤:如果傳送的目標位置的物體標籤和此相同,則不能傳送。

(6)navemesh 邊緣限制:在navemesh 上傳送,如果在 navemesh 的邊界,則禁止傳送,數值是離邊界的距離範圍。

 

另外如003中所述,手柄需要添加發射射線的腳本

VRTK_PointerVRTK_StraightPointerRenderer即可實現傳送。

 

 

 

005_Controller_BasicObjectGrabbing

一、作用。

抓起物體。

二、示例。

在左手控制器上添加VRTK_InteractTouch、VRTK_InteractGrab

在需要抓取的物體上添加VRTK_InteractableObject即可,用手柄抓起物體之後,會默認給物體添加抓取方式VRTK_FixedJointGrabAttach組件,此外,換手操作需要給物體添加VRTK_SwapControllerGrabAction,高亮添加VRTK_OutlineObjectCopyHighlighter

 

 

 

 

006_Controller_UsingADoor

一、作用。

VRTK_InteractableObject擴展

二、示例。

這個Demo裏用開關門的例子對VRTK_InteractableObject腳本進行了擴展。

 

碰到門 按一下側鍵 就會調用一次StartUsing()

 

 

 

007_CameraRig_HeightAdjustTeleport

一、作用。

升降傳送。

二、示例。

場景4中的傳送是平面傳送,同樣的在[VRTK_Scripts]下創建的gameobject上添加VRTK_HeightAdjustTeleport組件,其他同案例4

snapToNearestFloor如果勾選,那麼傳送的Y位置將會吸附到離地面最近的位置(即不會漂在空中)。如果未勾選,那麼傳送的Y位置將是目標Y位置的位置(可以在空中)。

customRaycast:某個層的指定射線

layersToIgnore:忽略圖層。

008_Controller_UsingAGrabbedObject

一、作用。

VRTK_InteractableObject擴展,類似場景6

二、示例。

 

 

 

009_Controller_BezierPointer

一、作用。

拋物線傳送(貝塞爾曲線)。

二、示例。

手柄上需要添加的腳本如下圖。

 

 

 

010_CameraRig_TerrainTeleporting

一、作用。

傳送。

二、示例。

和場景9類似。

 

011_Camera_HeadSetCollisionFading

一、 作用。
頭部碰到東西黑屏模擬眨眼。
二、 示例。
有一些黑屏的效果,最後是忽略的碰撞標籤。
 

012_Controller_PointerWithAreaCollision

一、 作用。
傳送的人的區域顯示,並且可以設置碰撞是否可以傳送。
二、 示例。
 
 
在手柄上添加VRTK_PlayAreaCursor 並且在貝塞爾曲線腳本里引用一下
  
此外,[VRTK_Scripts] 下PlayAreayao 要添加VRTK_HeadsetCollision腳本,這個腳本依賴於VRTK_HeadsetFade,即可。
 

013_Controller_UsingAndGrabbingMultipleObjects

一、 作用。
抓取和使用物體的擴展,VRTK_InteractableObject擴展。主要體現Hold Button To Grab/HoldButton To Use勾選和不勾選的區別。
二、 示例。
區別在於是否需要持續按鍵纔可以進行操作。
 

014_Controller_SnappingObjectsOnGrab

一、 作用。
抓取的連接方式,以及抓取位置的設置(可以是自由抓取,或者是固定點抓取。)
例如:拿劍永遠拿劍柄,拿槍可以拿槍柄也可以拿槍管。
 
二、 示例。
1.抓取位置
拿劍永遠拿劍柄。
 
如果想要自由抓取的話只需要將Precision Grab勾選。
 
2.鏈接方式
比如上圖中的劍,抓取連接方式爲VRTK_FixedJointGrabAttach,關節鏈接的方式,抓住物體之後是可以碰掉的,有碰撞的存在。
比如下圖的短棒,抓取連接方式爲VRTK_ChildOfControllerGrabAttach,抓取後將短棒設置爲手柄的子對象,並且將剛體上的 Is Kinematic 勾選,即不受力的作用,不會產生碰撞的感覺。
 

015_Controller_TouchpadAxisControl

一、 作用。
扳機鍵、觸摸板、菜單鍵的交互。
二、 示例。
註冊按鍵事件。
 
獲得參數。
 

016_Controller_HapticRumble

一、 作用。
手柄震動。
二、 示例。
主要方法爲下圖,參數主要包括:引用手柄,震動強度,震動時間,震動頻率等。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章