官方推荐需要 Unity软件版本2018.3.10f1(或更高版本);
需要使用SteamVR1.2.3(2.0还不兼容)
unity里有两处需要设置:
1 确保Scripting Runtime Version设置为.NET 4.x Equivalent;
2 在XR Settings确保Virtual Reality Supported选项打勾;
菜单键获取变话为如下脚本:
VRTK_ControllerEvents events = GetComponent<VRTK_ControllerEvents>();
events.ButtonTwoPressed += Events_ButtonTwoPressed;
private void Events_ButtonTwoPressed(object sender, ControllerInteractionEventArgs e)
{
}
遗留事例文件里的事例场景说明:
001_CameraRig_VRPlayArea 摄像机平台虚拟游戏区域
显示[CameraRig]
预制件使用情况的简单场景。
002_Controller_Events 测试控制器事件
一个简单的场景,在控制台窗口中显示来自控制器的事件。
003_controller_simplepointer 控制器 单指针 指针事件
一个具有基本对象的场景,可以通过按下来激活来自控制器的激光束Touchpad
。指针事件也显示在控制台窗口中。
004_camerarig_basicteleport)004_CameraRig_BasicTeleport
具有基本对象的场景,其可以使用控制器激光束遍历以指向游戏世界中的对象,其中用户将通过按压Touchpad
控制器来传送到该对象。当Touchpad
释放时,用户被传送到激光束终点位置。
005_Controller_BasicObjectGrabbing
一个具有选择对象的场景,可以通过用控制器触摸它们并按下Grip
按钮来抓取它们。释放抓握按钮将使物体沿抓取控制器的方向和速度推进。场景还演示了当控制器触摸它们时对象的简单突出显示。交互事件也显示在控制台窗口中。
006_Controller_UsingADoor
具有门可交互对象的场景设置为usable
当按下控制器Trigger
按钮使用门时,门打开(或者如果门已经打开则关闭)。
007_CameraRig_HeightAdjustTeleport
具有不同高度对象的选择的场景,其可以使用控制器激光束指向物体并且如果激光束指向物体的顶部,则用户被传送到物体的顶部。此外,它表明如果用户进入不在对象上的游戏区域的一部分,则用户将落到最近的对象。这也使得用户能够仅通过站立在物体上来攀爬物体,因为从耳机的位置进行地板检测。
008_Controller_UsingAGrabbedObject
可以抓取的可交互对象的场景(按下Grip
控制器按钮)然后使用(按下Trigger
控制器按钮)。桌子上有一把枪可以拿起并开火,或者是一个奇怪的盒子,当拿起并使用顶部旋转时。
009_Controller_BezierPointer 控制器 贝塞尔曲线指针
然而,具有可以使用控制器遍历的不同高度对象的选择的场景,而不是仅仅指向直梁,该梁是弯曲的(在贝塞尔曲线上),其允许在用户不能看见的物品上攀爬。
010_CameraRig_TerrainTeleporting
具有地形对象的场景和可以使用控制器激光束指针遍历的不同高度的3d对象的选择。它显示了高度调节传送器如何用于爬升和减少游戏物体以及穿越地形。
011_Camera_HeadSetCollisionFading
在游戏区域周围有三面墙的场景,如果用户将头部放入任何可碰撞的墙壁中,则耳机会变黑,以防止看到不需要的物体剪裁伪影。
012_Controller_PointerWithAreaCollision
演示如何使用控制器指针遍历世界但是光束显示投影的游戏区域空间以及空间是否与任何对象发生碰撞的场景,然后禁用远程传送操作。这意味着可以创建一个具有用户无法传送到的区域的级别,因为它们允许用户剪辑到对象中。
013_Controller_UsingAndGrabbingMultipleObjects
一个场景,通过连续按住抓取按钮或按下抓取按钮一次拾取并再次释放来演示如何抓取可交互对象。场景还显示使用按钮可以按住以继续使用或按下使用按钮一次开始使用,再按一次停止使用。这允许多个对象同时进入其使用状态,如此示例场景中所示。
014_Controller_SnappingObjectsOnGrab
一个场景,其中包含一些对象,这些对象演示了对控制器机制的不同捕捉。两把绿色枪,轻剑和剑使用一个Snap Handle,它使用一个空的游戏对象作为可交互对象的子项作为抓取的方向点,因此对象的旋转和位置与给定的旋转和位置相匹配Snap Handle
。红色枪使用基本捕捉,不需要精确度,也没有提供不影响物体旋转但是将物体中心定位到控制器上的捕捉点的捕捉手柄。红色/绿色枪使用的Precision Snap
不会影响抓取物体的旋转或位置,并在控制器捕捉点接触物体的位置拾取物体。
15_Controller_TouchpadAxisControl
使用控制器触控板控制的带R / C汽车的场景。在触摸板上上下移动手指将导致汽车向前或向后行驶。将手指移动到左侧或右侧Touchpad
会导致汽车朝那个方向转动。按下Trigger
将导致汽车跳跃,这利用触发轴,按下触发器越多,汽车将跳得越高。
016_Controller_HapticRumble
一个带有易碎盒子和剑的场景。剑可以被拾起并在盒子里摆动。控制器在适当的振动下振动,取决于剑击中盒子的力度。如果剑受到足够的打击,盒子也会分开。
017_CameraRig_TouchpadWalking
一个场景,通过向前和向后滑动手指向该方向移动,演示如何使用触摸板在游戏世界中移动。在触摸板上左右滑动手指朝向该方向。旋转是通过游戏中的用户在场所中物理地旋转他们的身体来完成的,并且无论耳机看起来哪种方式都是用户向前走的方式。蹲伏也是可能的,如在这个场景中所展示的,并且结合耳机碰撞褪色脚本,它可以检测到不想要的碰撞(例如,如果用户在蹲伏时行走时站立)并将其位置重置到最后的已知位置。
018_CameraRig_FramesPerSecondCounter
在耳机视图中心显示每秒帧数的场景。按下触发器会生成一个新球体,按下触摸板会生成十个新球体。最终当存在大量球体时,FPS将下降并展示预制件。
019_Controller_InteractingWithPointer
一个场景,显示控制器指针梁如何用于切换可交互对象上的使用操作。按触摸板激活光束并将其瞄准对象将切换其使用状态。它还演示了如何通过使用捕捉到游戏对象的可交互对象来创建游戏菜单可以触发操作。按应用菜单按钮显示连接到控制器的立方体,该控制器具有菜单选项。将光束指向立方体上的另一个控制器将相应地选择菜单选项。
020_CameraRig_MeshTeleporting
具有网格对撞机的对象的场景,用于演示如何使用高度调整传送器来使用网格对撞机上下爬升物体。
021_Controller_GrabbingObjectsWithJoints
具有可伸缩对象集合的场景,该对象附加到具有关节的其他对象。该示例显示Interactable Objects可以具有不同的附加机制,以确定将对象连接到控制器的最佳方式。固定接头适用于保持像立方体这样的物体,因为它们完美地跟踪控制器,而弹簧接头在抽屉上工作良好,使其在操作时能够自然滑动。最后,Rotator Track在门上运行良好,可以自然控制门的摆动。还有一个角色关节对象,可以通过拉动每个相关部分来操纵不同的形状。
022_Controller_CustomBezierPointer
一个场景,演示了Bezier指针如何将复杂的对象传递给它以生成跟踪器光束和指针的光标。在场景中,具有旋转的粒子对象用于演示贝塞尔指针梁的不同外观。
023_Controller_ChildOfControllerOnGrab
一个场景,演示抓取机制,抓取的对象成为控制器抓取的孩子。这适用于需要绝对跟踪控制器的对象,并且在任何情况下都不希望脱节。该对象成为控制器的扩展。现场用弓箭示例演示了这一点,其中弓可以被拾取并跟踪到控制器,而另一个控制器负责拾取箭头以在弓中射击。
024_CameraRig_ExcludeTeleportLocation
一个场景,显示如何通过将命名标记应用于对象或应用特定名称的脚本来排除某些对象的远距离移植。在场景中,通过在其上ExcludeTeleport
设置标记来从传送位置中排除黄色对象,并且通过将ExcludeTeleport
附加到其上的脚本排除黑色对象。该ExcludeTeleport
脚本没有方法,只是用作占位符。
025_Controls_Overview
一个场景,展示现有的交互式控件,不同的方式如何设置以及如何对它们发送的事件做出反应。
026_Controller_ForceHoldObject
一个场景,显示如何在游戏开始时抓取对象并阻止用户删除该对象。场景自动抓住两把剑到每个控制器,并且不可能掉落任何一把剑。
027_CameraRig_TeleportByModelVillage
演示如何在不需要世界指针的情况下传送到不同位置并在表示游戏世界的迷你地图的对象上使用目标事件抽象类的场景。触摸并使用地图上的对象将用户传送到指定位置。
028_CameraRig_RoomExtender
一个场景,通过乘以伴侣边界中的物理步骤来演示扩展物理室空间比例空间的概念。较高的乘数意味着用户可以在游戏区域中走得更远,并且可以通过按下按钮来切换步行乘数。
029_Controller_Tooltips
演示使用预制件ObjectTooltip
和预制件向游戏对象和控制器添加工具提示的场景ControllerTooltips
。
030_Controls_RadialTouchpadMenu
演示使用预制件向控制器和其他对象添加动态径向菜单的场景RadialMenu
。
031_CameraRig_HeadsetGazePointer
一个场景,演示了将指针连接到耳机的能力,以允许用于远程移植的凝视指针或由世界指针支持的其他交互。的Touchpad
右控制器激活所述凝视光束,而Touchpad
左控制器上激活从天空为世界指针无人驾驶飞机投射的光束可以附着到任何对象。
032_Controller_CustomControllerModel
演示如何使用控制器的自定义模型而不是默认HTC Vive控制器的场景。它使用两个简单的指针代替默认控制器,并根据是否按下了抓取按钮或使用按钮显示简单的状态更改。
033_CameraRig_TeleportingInNavMesh
一个场景,演示如何使用烘焙的NavMesh来定义允许用户传送到的区域。
034_Controls_InteractingWithUnityUI
演示如何与Unity UI元素交互的场景。场景使用VRTK_UIPointer
右侧控制器上的脚本,允许使用简单指针光束与Unity UI元素进行交互。左侧控制器控制耳机上的简单指针,以演示与Unity UI元素的凝视交互。
035_Controller_OpacityAndHighlighting
演示如何更改控制器的不透明度以及如何突出显示控制器元素(如按钮甚至整个控制器模型)的场景。
036_Controller_CustomCompoundPointer
一个场景,演示Bezier指针只有在传送位置有效时才能显示对象(传送光束),并且可以沿着跟踪曲线创建动画轨迹。这个场景提供了一个纹理环境,用于测试传送,墙上的一些活跃的“等离子”球体可以用指针激活,另一个球体也可以被抓住和发射。
037_CameraRig_ClimbingFalling
一个场景,演示如何设置具有不同活动的攀爬机制以进行尝试。具有VRTK_InteractableObject
组件的各种对象分散在整个级别中。它们都具有GrabAttachMechanic
设置为Climbable
。
038_CameraRig_CameraRig_DashTeleport
一个场景,显示传送行为,并演示了使用广播的RaycastHit数组的方法。在示例中,破折号方式中的障碍物在破折号正在进行时关闭其网格渲染器。
039_CameraRig_AdaptiveQuality
仅与Unity 5.4及更高版本兼容
场景在耳机视图的中心显示每秒的帧数。此脚本的调试可视化显示在耳机视图的顶部边缘附近。按下触发器会生成一个新球体,按下触摸板会生成十个新球体。最终,当存在大量球体时,FPS将丢弃并演示脚本。
040_controls_panelmenu)040_Controls_PanelMenu
演示如何将可交互的面板预制件附加到游戏对象以提供其他设置的场景。
041_Controller_ObjectSnappingToDropZones
使用VRTK_SnapDropZone
预制件为一系列对象设置预定捕捉区域的场景,并演示如何仅将某些类型的对象捕捉到某些区域。
042_CameraRig_MoveInPlace
一个场景,演示用户如何通过以步行方式摆动控制器或通过利用头部摇摆运动在现场跑步来移动和穿越碰撞器。
043_Controller_SecondaryControllerActions
一个场景,演示了使用一个控制器抓取对象的能力,并通过抓取和拉动第二个控制器来缩放它。
044_CameraRig_RestrictedTeleportZones
使用VRTK_DestinationPoint
预制件设置预定义传送位置集合的场景。
043控制器二次控制器行动
044相机平台限制传送