VR開(kāi)發(fā)--SteamVR框架工具(2):激光指針與貝塞爾曲線激光指針

摘要:

1、VRTK_SimplePointer:激光指針+2、BezierPointer:貝塞爾曲線激光指針

1、簡(jiǎn)單激光指針(VRTK_SimplePointer)

(1)繼承于worldPointer

1.png

繼承于DestinationMarker、

2.png

(2)關(guān)于激光指針腳本:
3.png

(3)定義:從控制器尾部發(fā)出一個(gè)有色光束來(lái)模擬激光束,能判斷所指向的對(duì)象以及對(duì)象距控制器發(fā)出光束位置的距離。默認(rèn)按下控制器的抓握鍵(Grip)來(lái)激活

這個(gè)指針開(kāi)關(guān)按鈕可以通過(guò)在 VRTK_ControllerEvents腳本參數(shù)里來(lái)改變 pointerToggleButton來(lái)選擇設(shè)置

4.png

該腳本添加到預(yù)制里的控制器對(duì)象上,同事還要一并添加ControllerEvents腳本來(lái)監(jiān)聽(tīng)啟用,禁止光束的按鈕事件。

(4)腳本屬性一覽:

5.png

01.png
02.png
03.png
04.png
05.png

Enable Teleport(啟用傳送):如果勾選了,在目標(biāo)設(shè)置事件中的teleport標(biāo)志位就設(shè)為true,所以傳送腳本就知道是否要行動(dòng)到新的目標(biāo)。如果這個(gè)選項(xiàng)沒(méi)有勾選的話,控制器光束啟動(dòng)但是不會(huì)觸發(fā)位移。

Point Hit Color(指針碰撞顏色):當(dāng)光束和一個(gè)有效目標(biāo)碰撞的顏色。每個(gè)控制器可以有不同的顏色設(shè)置。

Pointer Miss Color(指針無(wú)碰撞顏色):當(dāng)光束沒(méi)有命中有效目標(biāo)時(shí)的顏色。每個(gè)控制器可以有不同的顏色設(shè)置。

Show Play Area Cursor(顯示游玩區(qū)光標(biāo)):如果這個(gè)啟動(dòng),游玩區(qū)界限就會(huì)在光束指針的頂端顯示出來(lái),顏色和當(dāng)前指針顏色相同。

Play Area Cursor Dimensions(游玩去光標(biāo)尺寸):決定游玩區(qū)光標(biāo)和碰撞的尺寸。如果值為零,Play Area Cursor 的尺寸將根據(jù)Play Area空間進(jìn)行校正。

Handle Play Area Cursor Collisions(處理游玩區(qū)光標(biāo)碰撞):如果勾選,當(dāng)游玩區(qū)光標(biāo)和其他物體發(fā)生碰撞時(shí),指針顏色就會(huì)變成Pointer Miss Color的顏色且WorldPointerDestinationSet 事件將不會(huì)被觸發(fā),這將防止傳送到游玩區(qū)會(huì)發(fā)生碰撞的區(qū)域。

Beam Always On(光束總是開(kāi)啟):如果這個(gè)勾選,光束指針總是可見(jiàn),但是設(shè)置目標(biāo)點(diǎn)事件仍然只會(huì)在所指定按鈕松開(kāi)時(shí)發(fā)出。

Pointer Thickness(指針光束厚度):光束長(zhǎng)寬也可以在腳本里設(shè)置以及能夠開(kāi)關(guān)顯示在光柱最后的球形光柱頂端(表示光標(biāo))。

Pointer Length(指針光束長(zhǎng)度):在停止前光束投射的距離。

Show Pointer Tip(顯示指針頂端):切換是否光標(biāo)顯示在光束指針的尾部。
相關(guān)例子:框架工具中003場(chǎng)景

2、VRTK_BezierPointer:貝塞爾曲線激光指針
6.png
06.png

(1)定義
貝塞爾指針從控制器末端發(fā)出一個(gè)曲線(由游戲?qū)ο蠼M構(gòu)而成)到(任何高度的)地面上一點(diǎn)。終點(diǎn)能夠彎曲到玩家看不見(jiàn)的對(duì)象頂部,所以可以傳送到各種高度的對(duì)象上。

激光束默認(rèn)按控制器上的抓握鍵Grip來(lái)激活。


109.png

8.png

貝塞爾指針腳本被添加到[CameraRig]預(yù)制里的控制器對(duì)象上,控制器對(duì)象同時(shí)需要添加VRTK_ControllerEvents腳本用來(lái)監(jiān)聽(tīng)控制器按鈕開(kāi)關(guān)光束的事件。
9.png

(2)腳本及相關(guān)屬性

10.png

Enable Teleport(啟用傳送):如果勾選了,在目標(biāo)設(shè)置事件中的teleport標(biāo)志位就設(shè)為true,所以傳送腳本就知道是否要行動(dòng)到新的目標(biāo)。如果這個(gè)選項(xiàng)沒(méi)有勾選的話,控制器光束啟動(dòng)但是不會(huì)觸發(fā)位移。
Point Hit Color(指針碰撞顏色):當(dāng)光束和一個(gè)有效目標(biāo)碰撞的顏色。每個(gè)控制器可以有不同的顏色設(shè)置。
Pointer Miss Color(指針無(wú)碰撞顏色):當(dāng)光束沒(méi)有命中有效目標(biāo)時(shí)的顏色。每個(gè)控制器可以有不同的顏色設(shè)置。
Show Play Area Cursor(顯示游玩區(qū)光標(biāo)):如果這個(gè)啟動(dòng),游玩區(qū)界限就會(huì)在光束指針的頂端顯示出來(lái),顏色和當(dāng)前指針顏色相同。
Play Area Cursor Dimensions(游玩去光標(biāo)尺寸):決定游玩區(qū)光標(biāo)和碰撞的尺寸。如果值為零,Play Area Cursor 的尺寸將根據(jù)Play Area空間進(jìn)行校正。
Handle Play Area Cursor Collisions(處理游玩區(qū)光標(biāo)碰撞):如果勾選,當(dāng)游玩區(qū)光標(biāo)和其他物體發(fā)生碰撞時(shí),指針顏色就會(huì)變成Pointer Miss Color的顏色且WorldPointerDestinationSet 事件將不會(huì)被觸發(fā),這將防止傳送到游玩區(qū)會(huì)發(fā)生碰撞的區(qū)域。
Beam Always On(光束總是開(kāi)啟):如果這個(gè)勾選,光束指針總是可見(jiàn),但是設(shè)置目標(biāo)點(diǎn)事件仍然只會(huì)在所指定按鈕松開(kāi)時(shí)發(fā)出。
Activate Delay(激活間隔):能夠再次激活指針光束的延遲時(shí)間秒數(shù)。用來(lái)防止持續(xù)傳送。
Pointer Length(指針光束長(zhǎng)度):在停止前光束投射的距離。
Pointer Density(指針密度):貝塞爾曲線光束渲染的物體個(gè)數(shù)。這里數(shù)值太高將很可能會(huì)因?yàn)榇罅夸秩緦?duì)象來(lái)對(duì)游戲性能有負(fù)面影響。
Show Pointer Cursor****(****顯示指針光標(biāo)****)****:在光束終點(diǎn)位置的地面顯示光標(biāo)。用來(lái)看光束終點(diǎn)位置的高度很有用,它可以通過(guò)切換這個(gè)來(lái)關(guān)閉。

Pointer Cursor Radius(指針光標(biāo)半徑):地面指針光標(biāo)的尺寸,這個(gè)值也會(huì)影響貝塞爾曲線光束里的對(duì)象的尺寸。半徑越大,對(duì)象尺寸越大。

Beam Curve Offset(光束曲線偏移:投射光束時(shí)應(yīng)用的高度偏移量,就算在光束徑直指向時(shí)也能產(chǎn)生一個(gè)光滑的曲線。

Custom Pointer Tracer****(****自定義指針軌跡****)****: 可以在這里設(shè)置一個(gè)自定義的游戲?qū)ο笥脕?lái)代替光束軌跡的默認(rèn)球體。自定義游戲?qū)ο髮⒑涂刂破鞯男D(zhuǎn)想匹配。

Custom Pointer Cursor(****自定義指針光標(biāo)****):可以在這里設(shè)置一個(gè)自定義的游戲?qū)ο笥脕?lái)代替指針光標(biāo)的默認(rèn)平柱體。

貝塞爾指針對(duì)象擴(kuò)展自VRTK_WorldPointer 抽象類并因此發(fā)出相同的事件和有效數(shù)據(jù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容