VR開發--SteamVR框架工具(4):可交互對象+抓取交互對象+使用可交互對象+自動抓取可交互對象

1、VRTK_InteractableObject:可交互對象

(1)定義:
可交互對象腳本被添加到需要用(如控制器)來交互的任何游戲對象上。

1.png
2.png

(2)參數:

3.png

Touch Interactions:觸摸交互
Highlight On Touch:如果勾選,這個對象在控制器觸摸它時就會高亮。
Touch Highlight Color:對象被觸摸時高亮的顏色。顏色可以被任何全局的設置顏色來覆寫(例如InteractTouch 腳本)。
Rumble On Touch:控制器觸碰對象時觸發振動反饋,x表明時長,y表明震動強度。(x和y將來會被自定義編輯器代替)。

4.png

Grab Interactions:抓握交互
Is Grabbale:決定對象是否能被抓握。
Is Droppable: 決定對象在被控制器抓握后能否被放下。如果沒有勾選,一旦用控制器按鈕拾起了物品就不能放下了。但是如果抓握的機制是關節(Fixed_Joint)的 話,當對象受力足夠大之后關節斷開,物品也就被放下了。所以最好使用控制器子物體的抓握機制(Child_Of_Controller)來防止這種情況。
Hold Button To Grab:如果勾選,控制器就需要持續按住設置為抓握的按鈕來保持抓握狀態。如果沒有勾選,抓握的按鈕切換抓握行為通過按下一次抓取,再按一次釋放。

7.png

Grab Mechanics:抓握機制
Grab Attach Type:這決定了抓取的物品在被抓取時怎樣被添加到控制器上。
o Fixed Joint(固定關節)用一個固定的關節把對象附加到控制器上,意味著附加對象以完全1:1的方式追蹤控制器的位置和旋轉。

 o Spring Joint(彈性關節)用一個彈性關節把對象添加到控制器上,意味著物體和控制器之間有一些彈性,彈力驅動物體。在想要牽引一個物體而不是直接把物體對齊到控制器上是很有效的。就感覺物體有運動阻力一般。

 o Track Object (追蹤對象)不是通過關節來把對象附加到控制器上,而是確保對象追蹤控制器的方向,這適用于鉸鏈式關節。

 o Child Of Controller (控制器子物體)簡單地讓對象成為抓取控制器的子物體,所以自然地追蹤了控制器運動位置。

Detach Threshold(分離閾值): 當對象從被抓取的控制器分離時的力值。如果控制器試著施加一個高于這個閾值的力到對象上(從另一個對象上拉它或者推它到另一個對象),然后保持對象到抓取 控制器的關節就將斷開并且對象將不能再被抓起了。這在Tracked Object抓取機制下也有效,只是這個 值確定斷開抓取錢控制器可以離對象多遠。
Spring Joint Strength(彈簧關節力):彈簧力保持對象到控制器。小數值將意味著彈簧很松并且對象需要一個更大的力去移動,大數值就意味著彈簧很緊,小點的力就可以移動它。

Spring Joint Damper(彈簧關節阻尼):彈簧的阻尼量在使用彈簧關節抓取機制下有效。在移動被關節的交互對象時,值越高震動效果越小。

Throw Muliplier(投擲倍數):值用來乘以給定對象被扔出時的速度值。這還可以被用來連同Interact Grab腳本的Throw Multiplier來讓對象被扔的比平常更遠(或者輸入的值小于1就扔的很近)。

6.png

Is Usable(是否可用):決定對象是否可以被使用
Hold Button To Use:如果勾選,控制器上的使用(use)按鈕需要被持續按下來保持使用。如果沒有勾選,use按鈕用一次按鈕按下來啟動使用和再一次按下來停止使用。

Pointer Avtivates Use Action: 如果勾選,當一個世界光束指針(由控制器投射)碰到了交互對象,如果對象的Hold Button To Use沒有勾選的話,當指針在對象上的時候就會運行對象的StartUsing方法,指針移開失效就會運行StopUsing方法。這個選項在被勾選以 后,為了防止在用一個指針來使用對象時發生不必要的傳送,就不會拋出目標點設置( Destination Set )事件。

Rumble On Use: 控制器觸碰對象時觸發振動反饋,x表明時長,y表明震動強度。(x和y將來會被自定義編輯器代替)。

2、VRTK_InteractTouch:觸碰

(1)定義:
觸摸交互腳本被添加到[CameraRig] 預制里的控制器對象上。

8.png

(2)參數:
Hide Controller On Touch: 當有效觸碰發生時隱藏控制器模型
Hide Controller Delay:觸摸隱藏控制器之前的等待秒數。
Global Touch Highlight Color: 如果交互對象被觸碰就能高亮顯示,沒有設置本地顏色的話就使用全局顏色。

發出的事件:
ControllerTouchInteractableObject****:當有效對象被碰到時發出
ControllerUntouchInteractableObject: 當一個有效對象不再被觸碰時發出
相關例子:框架工具中005場景

3、VRTK_InteractGrab:抓取交互對象

(1)定義:
交互抓取腳本被 添加到[CameraRig] 預制里的控制器對象上,并且需要添加VRTK_ControllerEvents腳本用來監聽抓取和釋放交互游戲對象的控制器按鈕事件。它監聽 AliasGrabOn和AliasGrabOff 事件來確定對象合適應該被抓取和釋放。

注意:
1、控制器對象也需要添加VRTK_InteractTouch 腳本用來確定何時一個可交互對象被觸摸到。只有有效的被觸摸對象才能被抓取。
2、如果控制器觸碰到一個包含VRTK_InteractableObject腳本并且isGrabbable 標志位設置為真的游戲對象,該對象就可以被抓取。
3、如果有效可交互對象是可抓取的,按下控制器上所設置的抓取按鈕(默認是Trigger按鈕)將抓取和對齊對象到控制器上,并且直到抓取按鈕松開才會被釋放。
4、當控制器抓取按鈕松開時,如果可交互對象是可抓取的,它將會被按一定速率沿著控制器松開時的方向進行推動,這就模擬了對象投擲
5、可交互對象需要碰撞體用來激活觸發和一個剛體用來拾取它們并在游戲世界中四處移動它們。

9.png

(2)參數:
可以看到默認添加了事件,代理,觸摸腳本
10.png

Controller Attach Point:控制器模型上用來吸附抓取的對象的剛體點(默認為tip)
Hide Controller On Grab: 當有效抓取發生時隱藏控制器模型。

Hide Controller Delay:在抓取時隱藏控制器之前的等待時間秒數。

Grab Precognition:預先抓取: 在抓取按鈕按下時和控制器正在抓取某個東西時之間時間量。例如,如果一個對象下落過快,因為人的反應時間可能很難及時按下抓取按鈕來抓住對象。這個值越高 意味著抓取鍵可以越提前在控制器碰到對象以及碰撞發生前按下,如果抓取鍵仍然被按下(如果抓取對象需要持續按鍵抓取的話),則抓取動作就會成功。

Throw Multiplier:投擲乘數:用來乘以對象被扔出時速度的量。在放大 CameraRig 來模擬能夠把物體扔的更遠時是很有用的。

Create Rigid Body When Not Touching:如果勾選,當抓取按鈕按下時,如果控制器沒有碰到一個可交互的對象,那么添加到控制器上的剛體就允許控制器去推動周圍其他的剛體對象。

發出事件如下:
· ControllerGrabInteractableObject: 當有效對象被抓取時發出

· ControllerUngrabInteractableObject: 當有效對象從抓取到放開時發出

4、VRTK_InteractUse:使用可交互對象

(1)定義:
交互使用腳本被 添加到[CameraRig] 預制里的控制器對象上,并且需要添加VRTK_interactTouch及 VRTK_ControllerEvents腳本用來監聽使用和停止使用交互游戲對象的控制器按鈕事件。它監聽 AliasUseOn 和AliasUseOff 事件來確定對象合適應該被使用和停止使用。
控制器對象也需要添加VRTK_InteractTouch腳本來決定何時可交互對象被觸碰。只有有效的觸碰對象才能被使用。
如果控制器觸碰到一個包含VRTK_InteractableObject 腳本且isUsable標志位設置為真,這個對象就能被使用。

12.png

(2)參數:
Hide Controller On Use:當有效使用動作開始時隱藏控制器模型
Hide Controller Delay:在使用之前,隱藏控制器的等待時間秒數
發出事件:
ControllerUseInteractableObject: 當一個有效對象開始被使用時發出
ControllerUnuseInteractableObject: 當一個有效對象停止被使用時發出
相關例子:框架工具中006/008場景

5、VRTK_ObjectAutoGrab:自動抓取可交互對象

(1)定義:
通過把VRTK_ObjectAutoGrab腳本加到控制器上并指定應該默認抓取的對象,來讓特定控制器能自動抓取可交互對象。
自動抓取對象腳本添加到[CameraRig] 預制里的控制器對象上,控制器對象還需要添加VRTK_InteractGrab 腳本。

11.png

(2)參數:
Object To Grab:抓取的對象):在游戲開始時被控制器抓取的游戲對象(在場景或者預制里)。
Clone Grabbed Object:復制被抓取對象: 如果勾選,Object To Grab(抓取的對象)將被復制到一個新對象并添加到控制器上,而被復制的對象留在場景里。這在兩個控制器都需要抓取同樣的對象時是需要的,因為單個對象 不能被不同的控制器同時抓取。如果被抓取的對象是一個預制就也需要被復制,因為它需要存在于場景中被抓取。
相關例子:框架工具中026場景
17.png

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容