官方推薦需要 Unity軟件版本2018.3.10f1(或更高版本)眷茁;
需要使用SteamVR1.2.3(2.0還不兼容)
unity里有兩處需要設(shè)置:
1 確保Scripting Runtime Version設(shè)置為.NET 4.x Equivalent砰蠢;
2 在XR Settings確保Virtual Reality Supported選項(xiàng)打勾;
菜單鍵獲取變話為如下腳本:
VRTK_ControllerEvents events = GetComponent<VRTK_ControllerEvents>();
events.ButtonTwoPressed += Events_ButtonTwoPressed;
private void Events_ButtonTwoPressed(object sender, ControllerInteractionEventArgs e)
{
}
遺留事例文件里的事例場景說明:
001_CameraRig_VRPlayArea 攝像機(jī)平臺(tái)虛擬游戲區(qū)域
顯示[CameraRig]
預(yù)制件使用情況的簡單場景谈截。
002_Controller_Events 測試控制器事件
一個(gè)簡單的場景,在控制臺(tái)窗口中顯示來自控制器的事件。
003_controller_simplepointer 控制器 單指針 指針事件
一個(gè)具有基本對象的場景簸喂,可以通過按下來激活來自控制器的激光束Touchpad
毙死。指針事件也顯示在控制臺(tái)窗口中。
004_camerarig_basicteleport)004_CameraRig_BasicTeleport
具有基本對象的場景喻鳄,其可以使用控制器激光束遍歷以指向游戲世界中的對象扼倘,其中用戶將通過按壓Touchpad
控制器來傳送到該對象。當(dāng)Touchpad
釋放時(shí)除呵,用戶被傳送到激光束終點(diǎn)位置再菊。
005_Controller_BasicObjectGrabbing
一個(gè)具有選擇對象的場景,可以通過用控制器觸摸它們并按下Grip
按鈕來抓取它們颜曾。釋放抓握按鈕將使物體沿抓取控制器的方向和速度推進(jìn)纠拔。場景還演示了當(dāng)控制器觸摸它們時(shí)對象的簡單突出顯示。交互事件也顯示在控制臺(tái)窗口中泛豪。
006_Controller_UsingADoor
具有門可交互對象的場景設(shè)置為usable
當(dāng)按下控制器Trigger
按鈕使用門時(shí)稠诲,門打開(或者如果門已經(jīng)打開則關(guān)閉)。
007_CameraRig_HeightAdjustTeleport
具有不同高度對象的選擇的場景诡曙,其可以使用控制器激光束指向物體并且如果激光束指向物體的頂部臀叙,則用戶被傳送到物體的頂部。此外价卤,它表明如果用戶進(jìn)入不在對象上的游戲區(qū)域的一部分劝萤,則用戶將落到最近的對象。這也使得用戶能夠僅通過站立在物體上來攀爬物體慎璧,因?yàn)閺亩鷻C(jī)的位置進(jìn)行地板檢測床嫌。
008_Controller_UsingAGrabbedObject
可以抓取的可交互對象的場景(按下Grip
控制器按鈕)然后使用(按下Trigger
控制器按鈕)。桌子上有一把槍可以拿起并開火炸卑,或者是一個(gè)奇怪的盒子既鞠,當(dāng)拿起并使用頂部旋轉(zhuǎn)時(shí)。
009_Controller_BezierPointer 控制器 貝塞爾曲線指針
然而盖文,具有可以使用控制器遍歷的不同高度對象的選擇的場景嘱蛋,而不是僅僅指向直梁,該梁是彎曲的(在貝塞爾曲線上)五续,其允許在用戶不能看見的物品上攀爬洒敏。
010_CameraRig_TerrainTeleporting
具有地形對象的場景和可以使用控制器激光束指針遍歷的不同高度的3d對象的選擇。它顯示了高度調(diào)節(jié)傳送器如何用于爬升和減少游戲物體以及穿越地形疙驾。
011_Camera_HeadSetCollisionFading
在游戲區(qū)域周圍有三面墻的場景凶伙,如果用戶將頭部放入任何可碰撞的墻壁中,則耳機(jī)會(huì)變黑它碎,以防止看到不需要的物體剪裁偽影函荣。
012_Controller_PointerWithAreaCollision
演示如何使用控制器指針遍歷世界但是光束顯示投影的游戲區(qū)域空間以及空間是否與任何對象發(fā)生碰撞的場景显押,然后禁用遠(yuǎn)程傳送操作。這意味著可以創(chuàng)建一個(gè)具有用戶無法傳送到的區(qū)域的級別傻挂,因?yàn)樗鼈冊试S用戶剪輯到對象中乘碑。
013_Controller_UsingAndGrabbingMultipleObjects
一個(gè)場景,通過連續(xù)按住抓取按鈕或按下抓取按鈕一次拾取并再次釋放來演示如何抓取可交互對象金拒。場景還顯示使用按鈕可以按住以繼續(xù)使用或按下使用按鈕一次開始使用兽肤,再按一次停止使用。這允許多個(gè)對象同時(shí)進(jìn)入其使用狀態(tài)绪抛,如此示例場景中所示资铡。
014_Controller_SnappingObjectsOnGrab
一個(gè)場景,其中包含一些對象幢码,這些對象演示了對控制器機(jī)制的不同捕捉笤休。兩把綠色槍,輕劍和劍使用一個(gè)Snap Handle蛤育,它使用一個(gè)空的游戲?qū)ο笞鳛榭山换ο蟮淖禹?xiàng)作為抓取的方向點(diǎn)宛官,因此對象的旋轉(zhuǎn)和位置與給定的旋轉(zhuǎn)和位置相匹配Snap Handle
。紅色槍使用基本捕捉瓦糕,不需要精確度,也沒有提供不影響物體旋轉(zhuǎn)但是將物體中心定位到控制器上的捕捉點(diǎn)的捕捉手柄腋么。紅色/綠色槍使用的Precision Snap
不會(huì)影響抓取物體的旋轉(zhuǎn)或位置咕娄,并在控制器捕捉點(diǎn)接觸物體的位置拾取物體。
15_Controller_TouchpadAxisControl
使用控制器觸控板控制的帶R / C汽車的場景珊擂。在觸摸板上上下移動(dòng)手指將導(dǎo)致汽車向前或向后行駛圣勒。將手指移動(dòng)到左側(cè)或右側(cè)Touchpad
會(huì)導(dǎo)致汽車朝那個(gè)方向轉(zhuǎn)動(dòng)。按下Trigger
將導(dǎo)致汽車跳躍摧扇,這利用觸發(fā)軸圣贸,按下觸發(fā)器越多,汽車將跳得越高扛稽。
016_Controller_HapticRumble
一個(gè)帶有易碎盒子和劍的場景吁峻。劍可以被拾起并在盒子里擺動(dòng)≡谡牛控制器在適當(dāng)?shù)恼駝?dòng)下振動(dòng)用含,取決于劍擊中盒子的力度。如果劍受到足夠的打擊帮匾,盒子也會(huì)分開啄骇。
017_CameraRig_TouchpadWalking
一個(gè)場景,通過向前和向后滑動(dòng)手指向該方向移動(dòng)瘟斜,演示如何使用觸摸板在游戲世界中移動(dòng)缸夹。在觸摸板上左右滑動(dòng)手指朝向該方向痪寻。旋轉(zhuǎn)是通過游戲中的用戶在場所中物理地旋轉(zhuǎn)他們的身體來完成的,并且無論耳機(jī)看起來哪種方式都是用戶向前走的方式虽惭。蹲伏也是可能的槽华,如在這個(gè)場景中所展示的,并且結(jié)合耳機(jī)碰撞褪色腳本趟妥,它可以檢測到不想要的碰撞(例如猫态,如果用戶在蹲伏時(shí)行走時(shí)站立)并將其位置重置到最后的已知位置。
018_CameraRig_FramesPerSecondCounter
在耳機(jī)視圖中心顯示每秒幀數(shù)的場景披摄。按下觸發(fā)器會(huì)生成一個(gè)新球體亲雪,按下觸摸板會(huì)生成十個(gè)新球體。最終當(dāng)存在大量球體時(shí)疚膊,F(xiàn)PS將下降并展示預(yù)制件义辕。
019_Controller_InteractingWithPointer
一個(gè)場景,顯示控制器指針梁如何用于切換可交互對象上的使用操作寓盗。按觸摸板激活光束并將其瞄準(zhǔn)對象將切換其使用狀態(tài)灌砖。它還演示了如何通過使用捕捉到游戲?qū)ο蟮目山换ο髞韯?chuàng)建游戲菜單可以觸發(fā)操作。按應(yīng)用菜單按鈕顯示連接到控制器的立方體傀蚌,該控制器具有菜單選項(xiàng)基显。將光束指向立方體上的另一個(gè)控制器將相應(yīng)地選擇菜單選項(xiàng)。
020_CameraRig_MeshTeleporting
具有網(wǎng)格對撞機(jī)的對象的場景善炫,用于演示如何使用高度調(diào)整傳送器來使用網(wǎng)格對撞機(jī)上下爬升物體撩幽。
021_Controller_GrabbingObjectsWithJoints
具有可伸縮對象集合的場景,該對象附加到具有關(guān)節(jié)的其他對象箩艺。該示例顯示Interactable Objects可以具有不同的附加機(jī)制窜醉,以確定將對象連接到控制器的最佳方式。固定接頭適用于保持像立方體這樣的物體艺谆,因?yàn)樗鼈兺昝赖馗櫩刂破髡ザ瑁鴱椈山宇^在抽屜上工作良好,使其在操作時(shí)能夠自然滑動(dòng)静汤。最后琅催,Rotator Track在門上運(yùn)行良好,可以自然控制門的擺動(dòng)撒妈。還有一個(gè)角色關(guān)節(jié)對象恢暖,可以通過拉動(dòng)每個(gè)相關(guān)部分來操縱不同的形狀。
022_Controller_CustomBezierPointer
一個(gè)場景狰右,演示了Bezier指針如何將復(fù)雜的對象傳遞給它以生成跟蹤器光束和指針的光標(biāo)杰捂。在場景中,具有旋轉(zhuǎn)的粒子對象用于演示貝塞爾指針梁的不同外觀棋蚌。
023_Controller_ChildOfControllerOnGrab
一個(gè)場景嫁佳,演示抓取機(jī)制挨队,抓取的對象成為控制器抓取的孩子。這適用于需要絕對跟蹤控制器的對象蒿往,并且在任何情況下都不希望脫節(jié)盛垦。該對象成為控制器的擴(kuò)展。現(xiàn)場用弓箭示例演示了這一點(diǎn)瓤漏,其中弓可以被拾取并跟蹤到控制器腾夯,而另一個(gè)控制器負(fù)責(zé)拾取箭頭以在弓中射擊。
024_CameraRig_ExcludeTeleportLocation
一個(gè)場景蔬充,顯示如何通過將命名標(biāo)記應(yīng)用于對象或應(yīng)用特定名稱的腳本來排除某些對象的遠(yuǎn)距離移植蝶俱。在場景中,通過在其上ExcludeTeleport
設(shè)置標(biāo)記來從傳送位置中排除黃色對象饥漫,并且通過將ExcludeTeleport
附加到其上的腳本排除黑色對象榨呆。該ExcludeTeleport
腳本沒有方法,只是用作占位符庸队。
025_Controls_Overview
一個(gè)場景积蜻,展示現(xiàn)有的交互式控件,不同的方式如何設(shè)置以及如何對它們發(fā)送的事件做出反應(yīng)彻消。
026_Controller_ForceHoldObject
一個(gè)場景竿拆,顯示如何在游戲開始時(shí)抓取對象并阻止用戶刪除該對象。場景自動(dòng)抓住兩把劍到每個(gè)控制器证膨,并且不可能掉落任何一把劍如输。
027_CameraRig_TeleportByModelVillage
演示如何在不需要世界指針的情況下傳送到不同位置并在表示游戲世界的迷你地圖的對象上使用目標(biāo)事件抽象類的場景。觸摸并使用地圖上的對象將用戶傳送到指定位置央勒。
028_CameraRig_RoomExtender
一個(gè)場景,通過乘以伴侶邊界中的物理步驟來演示擴(kuò)展物理室空間比例空間的概念澳化。較高的乘數(shù)意味著用戶可以在游戲區(qū)域中走得更遠(yuǎn)崔步,并且可以通過按下按鈕來切換步行乘數(shù)。
029_Controller_Tooltips
演示使用預(yù)制件ObjectTooltip
和預(yù)制件向游戲?qū)ο蠛涂刂破魈砑庸ぞ咛崾镜膱鼍?code>ControllerTooltips缎谷。
030_Controls_RadialTouchpadMenu
演示使用預(yù)制件向控制器和其他對象添加動(dòng)態(tài)徑向菜單的場景RadialMenu
井濒。
031_CameraRig_HeadsetGazePointer
一個(gè)場景,演示了將指針連接到耳機(jī)的能力列林,以允許用于遠(yuǎn)程移植的凝視指針或由世界指針支持的其他交互瑞你。的Touchpad
右控制器激活所述凝視光束,而Touchpad
左控制器上激活從天空為世界指針無人駕駛飛機(jī)投射的光束可以附著到任何對象希痴。
032_Controller_CustomControllerModel
演示如何使用控制器的自定義模型而不是默認(rèn)HTC Vive控制器的場景者甲。它使用兩個(gè)簡單的指針代替默認(rèn)控制器,并根據(jù)是否按下了抓取按鈕或使用按鈕顯示簡單的狀態(tài)更改砌创。
033_CameraRig_TeleportingInNavMesh
一個(gè)場景虏缸,演示如何使用烘焙的NavMesh來定義允許用戶傳送到的區(qū)域鲫懒。
034_Controls_InteractingWithUnityUI
演示如何與Unity UI元素交互的場景。場景使用VRTK_UIPointer
右側(cè)控制器上的腳本刽辙,允許使用簡單指針光束與Unity UI元素進(jìn)行交互窥岩。左側(cè)控制器控制耳機(jī)上的簡單指針,以演示與Unity UI元素的凝視交互宰缤。
035_Controller_OpacityAndHighlighting
演示如何更改控制器的不透明度以及如何突出顯示控制器元素(如按鈕甚至整個(gè)控制器模型)的場景颂翼。
036_Controller_CustomCompoundPointer
一個(gè)場景,演示Bezier指針只有在傳送位置有效時(shí)才能顯示對象(傳送光束)慨灭,并且可以沿著跟蹤曲線創(chuàng)建動(dòng)畫軌跡朦乏。這個(gè)場景提供了一個(gè)紋理環(huán)境,用于測試傳送缘挑,墻上的一些活躍的“等離子”球體可以用指針激活集歇,另一個(gè)球體也可以被抓住和發(fā)射。
037_CameraRig_ClimbingFalling
一個(gè)場景语淘,演示如何設(shè)置具有不同活動(dòng)的攀爬機(jī)制以進(jìn)行嘗試诲宇。具有VRTK_InteractableObject
組件的各種對象分散在整個(gè)級別中。它們都具有GrabAttachMechanic
設(shè)置為Climbable
惶翻。
038_CameraRig_CameraRig_DashTeleport
一個(gè)場景姑蓝,顯示傳送行為,并演示了使用廣播的RaycastHit數(shù)組的方法吕粗。在示例中纺荧,破折號方式中的障礙物在破折號正在進(jìn)行時(shí)關(guān)閉其網(wǎng)格渲染器。
039_CameraRig_AdaptiveQuality
僅與Unity 5.4及更高版本兼容
場景在耳機(jī)視圖的中心顯示每秒的幀數(shù)颅筋。此腳本的調(diào)試可視化顯示在耳機(jī)視圖的頂部邊緣附近宙暇。按下觸發(fā)器會(huì)生成一個(gè)新球體,按下觸摸板會(huì)生成十個(gè)新球體议泵。最終占贫,當(dāng)存在大量球體時(shí),F(xiàn)PS將丟棄并演示腳本先口。
040_controls_panelmenu)040_Controls_PanelMenu
演示如何將可交互的面板預(yù)制件附加到游戲?qū)ο笠蕴峁┢渌O(shè)置的場景型奥。
041_Controller_ObjectSnappingToDropZones
使用VRTK_SnapDropZone
預(yù)制件為一系列對象設(shè)置預(yù)定捕捉區(qū)域的場景,并演示如何僅將某些類型的對象捕捉到某些區(qū)域碉京。
042_CameraRig_MoveInPlace
一個(gè)場景厢汹,演示用戶如何通過以步行方式擺動(dòng)控制器或通過利用頭部搖擺運(yùn)動(dòng)在現(xiàn)場跑步來移??動(dòng)和穿越碰撞器。
043_Controller_SecondaryControllerActions
一個(gè)場景谐宙,演示了使用一個(gè)控制器抓取對象的能力烫葬,并通過抓取和拉動(dòng)第二個(gè)控制器來縮放它。
044_CameraRig_RestrictedTeleportZones
使用VRTK_DestinationPoint
預(yù)制件設(shè)置預(yù)定義傳送位置集合的場景卧惜。
043控制器二次控制器行動(dòng)
044相機(jī)平臺(tái)限制傳送