VRTK_4.0使用指南(三)射線忽略以及只和某個物體檢測

1、忽略層級

在這里我們每次導出的功能模塊會覺得非常麻煩。那么我在下面就不講解功能模塊的導入了,我直接將VRTK4.0 Demo中的所有功能模塊都導入進來,一次性使用了。

那么這里我將所有的功能模塊導入后,如果我有一個需要需要射線射中的時候忽略某一帶BoxCollider的物體,那么我們這時候可以直接將該游戲物體的Layer改成IgnoreRaycast層級即可,這時候這個游戲物體就可以直接被忽略了,運行后可以看到Box直接穿過去了
image.png
,當時如果這個時候我需要左手手柄進行交互而右手手柄的射線不進行交互的話這時候我們就需要重新定義一個新的層級IgnoreStraightPointer,然后我們把剛剛的Box的層級改成IgnoreStraightPointer,然后我們在創建一個左手的直線射線,這時候發射射線可以發現我們左右手柄的射線都可以發射射線交互,那么這時候我們在右手的射線Indicators.ObjectPointers.Straight上掛載腳本Physic Cast組件,可以看到Physic Cast組件上的屬性可以讓我們設定我們需要忽略那一層,我們將層級選擇至IgnoreStraightPointer就可以了,然后我們將我們的右手的Physic Cast組價拖入到Pointer Facade的屬性Raycast Rules中去就可以了
image.png

然后運行測試就可以看到我們的右手手柄的射線被忽略了 左手手柄的射線還是可以選中的。

2、只和某個物體檢測

首先我們打開菜單欄下Window->Zinnia->Observable List Component Generator,打開窗口后,名字我們自己可定義一個,然后Type類型我們選擇List Contains Rule,然后點擊生成,就會在Hierarchy面板上生成一個游戲物體.


image.png

然后選擇我們剛剛生成的物體,將我們的Cube添加進來,這里的意思是LIst里包含的目標是有效的目標
image.png
那如果我們想將List里的目標改成無效的目標,我們就需要取反,這里我們新建一個游戲物體命名為PointerNegationRule,在新建的物體上添加腳本NegationRule,然后將我們自動生成的物體PointerValidTargetRule指定給NegationRule腳本上的屬性Rule中,最后我們再將我們的PointerNegationRule指定給我們右手射線中的Target Validity中,這時候我們右手手柄射線射中的物體就不會包含PointerValidTargetRule的List里面的游戲物體了。運行起來后發現右手手柄是可以選中Cube的 但是并不會穿透
image.png

當然我們也可以直接將PointerValidTargetRule指定給右手射線中的Target Validity中。這樣的話就是除了Cube可以是有效目標其他的都不是有效目標

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容