使用 VRTK 實現手柄發射射線和漫遊功能#
@TOC
通過學習 VRTK 自帶的新案例【002-Pointers StraightPointer】、【003-Pointers BezierPointers】、【004-Locomotio Teleporting】, 實現了我前期需要的功能。
【002-Pointers StraightPointer】案例說明#
在該場景中,你觸摸觸摸板後出現一條直線,按下觸摸板放開後會對射線觸碰到的物體進行選擇,可以看到物體的邊框顏色有所變化,同時在 unity 控制台會打印出所選擇的物體的名字、手柄與物體之間的距離及射線頂端在物體上的位置。
【003-Pointers BezierPointers】案例說明#
在該場景,你觸摸觸摸板後,手柄發射一條曲線,按下並釋放觸摸板進行選擇。可以看到場景中有三個選項圖塊,選擇左邊的圖塊可以將射線變為線性的,選擇右邊的可以將射線樣式變為自定義的樣式,在該場景中自定義的樣式為將射線頂端與物體接觸後的樣式變為光環,選擇中間的圖塊可以將樣式設置成貝塞爾曲線的默認樣式。
【004-Locomotio Teleporting】案例說明#
在該場景,按下觸摸板發射射線,松開可以傳送到指針光標的位置,可以傳送方塊到被網格碰撞器包圍的石頭上,高度不受限制,同時通過腳本對灰色方塊進行限制,使其不能成為傳送地點。
可以自行體驗學習。
為了方便後期交互,個人開發習慣:左手柄發射曲線瞬移,右手柄發射直線交互。之前我已經搭建好了 VR 開發的基本環境,不懂的可以看我之前的文章,下面開發實現發射射線和瞬移。
1、在【VRTK_Scripts】下添加空物體命名為【PlayArea】,為其添加 VRTK 組件【VRTK_DashTeleport】(個人比較喜歡用這個,實現傳送的腳本很多,自行學習使用):
2、為有手柄添加組件【VRTK_ControllerEvents】(監聽手柄事件的腳本)【VRTK_StraightPointerRenderer】(發射直線的的腳本,可以更改射線樣式和顏色)【VRTK_Pointer】(渲染射線指針的) 將本物體的拖入,如下圖:
3、同理,為左手柄添加【VRTK_ControllerEvents】【VRTK_BezierPointerRenderer】(這個是發射曲線的腳本)【VRTK_Pointer】
這裡,為了指針光標點更好看一點可以如下圖所示設置:
也可以自己學習製作自己喜歡的樣式。至此完成基本配置。
功能測試#
有手柄發射射線漫遊,這裡使用的是模擬器,按住鍵盤上【Q】發射射線,松開瞬移:
左手柄發射射線漫遊:
基本功能已經實現了,後面再完善吧。