淘先锋技术网

首页 1 2 3 4 5 6 7

一:选择合适版本插件

1.下载SteamVR和VRTk插件

由于官方的版本升级太快,而且升级后有很多的新坑,所以我们使用较为稳定的版本来开发 点击此处下载:下载地址 提取码:we2x

注意: 2018版本的VRTK适用于2017以下版本的Unity,如果项目开发要求用2018以上版本的开发需要2019版本VRTK,否则会报错,上方的链接中包括两个版本的VRTK

二:导入插件

将两个插件导入我们的项目工程中

遇到这个弹窗,直接选择AccpetAll就好了

查看控制台,确定没有错误文件后就可以开始制作程序了

第一次使用建议按以下操作一步步学习

1.基础设置

==创建一个空对象== 将名字改为[VRTK_SDKManager]并为它添加组件VRTK_SDKManager

在VRTK/LegacyExampleFiles/ExampleResources/Prefabs目录下找到SDKSetups预制件,并且将它拖入我们刚刚创建的空对象下

讲SDKSetUp预制件下的用不到的都删掉,只留下SteamVR

然后继续设置VRTK_SDKManager

将SteamVR添加到Setups中

==再创建一个新对象== 名字改为[VRTK_Scripts]

1.在[VRTK_Scripts]下创建一个空对象,名字改为PlayArea,并为它添加VRTK_BasicTeleport组件

==用来设置玩家的活动区域,没有这个组件就无法移动==

2.在[VRTK_Scripts]下创建一个空对象,名字改为LeftController,并为它添加VRTK_ControllerEvents组件

==左手柄控制器==

3.在[VRTK_Scripts]下创建一个空对象,名字改为RightController,并为它添加VRTK_ControllerEvents组件

==右手柄控制器==

4.然后将LeftController和RightController添加到[VRTK_SDKManager]的Script Aliases中设置完成之后就是这个样子

移动功能

如果是使用左手移动,那我我们需要在LeftController上添加组件VRTK_Pointer

移动射线可以选择直线或者是抛物线(贝塞尔曲线)

直线:添加组件VRTK_StraightPointerRenderer

抛物线:添加组件VRTK_BezierPointerRenderer

VRTK_Pointer的设置:

==Enable Teleport勾选后才可以移动==

==Pointer Renderer 射线渲染== 将添加的VRTK_StraightPointerRenderer组件拖进来就好了

==Activation Button 控制射线显示或者隐藏的按钮== 如果不需要就选择Undefined

==Hold ButtonTo Activate 按下后显示射线== 这个就按操作要求去设置是否要选择它

==Activate On Enable 初始状态下显示射线== 按需求去设置吧

==Selection Button 按下后移动到射线的末端位置== 注意:射线移动的区域必须要有碰撞器

与UI交互

新建一个Cnavas,给他添加VRTK_UICanvas组件

画布一定要选择WorldSpace模式,要不然你怎么交互呢

然后设置好它的长和宽,我一般都习惯设置1920:1080

控制画布大小不要去调Width和Height,一定是调比例,等比缩放,然后放到合适的位置上就行了

然后我们使用射线与它交互

在我们上面创建好的RightController对象上面,添加组件VRTK_PointerVRTK_StraightPointerRenderer 然后我们在添加一个VRTK_UIPointer组件就好了

VRTK_Pointer设置:

==Enable Teleport== 设定是否用来移动

==PointerRenderer== 设定射线渲染,我们选择直线

==Activation Button== 激活射线按钮 我们选择Undefined就好了,点击Ui的射线一般都设置为一直存在

==HoldButtonToActivate== 按着按钮激活射线 也不要勾选

==Activation On Enable== 默认激活射线,选择这个就行

VRTK_UIPointer设置:

==ActivationButon激活UI功能按钮== 我们选择Undefined

==ActivationMode激活模式== 选择AlwaysOn 一直打开Ui功能

==SelectionButton触发按钮== 按客户需求或者个人想法设置

==ClickMethod点击方式== 我们选择在按下时触发事件

VRTK_StraightPointerRenderer依旧是拖拽到VRTK_Pointer的PointerRenderer中就好了

拾取物体

如果使用右手拾取,那么我们在RightController上面添加VRTK_InteractTouchVRTK_InteractGrab组件 VRTK_InteractGrab设置:

GrabButton拾取按钮 按需求自己选择

GrabPrecognition提前预判抓取物体 对应快速运动的物体,我们可能需要提早按下抓取按键才能抓住物体,数值是提前的时间值,值越大,可提前的抓取时间越长,看实际情况设置,又不是在拍抗日剧,应该用不到空手抓子弹

Throw Multiplier 把物体扔出去时,速度的倍增值。

Create Rigid Body When Not Touch 在碰到物体时才创建 RigidBody。默认情况下手柄也创建 Rigidbody,这就可以和物体在物理上碰撞。

VRTK_InteractTouch设置:

Custom RigidBody Object自定义用于判定接触的刚体物体,如果没有的话,会自动在子层级创建一个刚体物体。

要拾取的物体对象,要添加碰撞器(Collider),刚体(Rigidbody)和VRTK_InteractableObject

VRTK_InteractableObject设置:

1.Touch Settings 接触

Allow Touch Controller:规定哪个手柄可以接触这个物体。

2.Grab Settings抓取

IsGrabbable:是否可以被抓取。

Valid Drop:控制器在什么时候可以放下对象。

Hold Button To Grab:按住才能保证物体不掉落。

Grab Override Button:如何拾取此物体,如果这个物体拾取与别的物体不一样,在这里单独设置。

Allowed Grab Controllers:规定哪个手柄可以接触这个物体。

Precision Grab:精准抓取。如果是,则抓取的位置是刚接触到物体的点,而不是默认的物体中心位置。

Right Left Snap Handle:被抓物体的抓取点,该游戏物体应该放在被抓物的子层级下。

3.Use Settings使用

Use only if Grabbed:只有在被抓取时才可以被使用。

Hold Button to Use:长按手柄按键才可以使用。

Use Override Button:自定义操作按键。

Pointer activates Use Action:如果打钩,当手柄发射的激光落在交互物体上,于此同时如果Holon to use没有打钩,则使用该物体,Holon to use打钩了,则要按住使用按键才可以使用该物体。

PASS(清楚这些功能之后,可以直接在VRTK的Demo中将官方做好的基础设置对象复制到我们的场景中使用)路径:VRTK/LegacyExampleFiles