最近,在Unity中国官方学习网站看了一个关于SteamVR2.X开发的指南,里面除了基本Interaction System组件的介绍使用外,还有一个有意思的部分就是SteamVR2.X怎么与最新版的VRTK4进行集成开发,在此记录分享一下吧
准备工作
进入Packages文件中的manifest文件
“scopedRegistries”: [ { “name”: “npmjs”, “url”: “https://registry.npmjs.org/”, “scopes”: [ “io.extendreality” ] } ],粘贴到dependencies前面
“io.extendreality.tilia.camerarigs.trackedalias.unity”: “1.5.9”,“io.extendreality.tilia.interactions.interactables.unity”: “1.15.10”,“io.extendreality.tilia.interactions.snapzone.unity”: “1.1.54”,粘贴到dependencies后面
在VRTK4中,连接VRTK和头显手柄的桥梁是Tilia CameraRig TrackedAlias
在Packages中的 Tilia CameraRig TrackedAlias文件夹下拖出对应的预制体
在Player身上挂载LinkedAliasAssociationCollection脚本
PlayerArea:Player
Headset:VRCamera
Headset Camera:VRCamera
LeftController:LeftHand
LeftController Velocity Tracker(左手控制器速度估算组件):要编写脚本继承VRTK的类:VelocityTracker(using Zinnia.Tracking.Velocity),用于拾取物体后扔出等速度的估算
右手同左手一样
在SteamVR的Hand脚本中有返回手柄速度和角速度的两个函数,将这两个函数分别添加到对应的:VelocityTracker在重写函数中
然后把完成的脚本附加到左右手,最后赋值到左右手的控制器速度估算组件框中
设定完成后,把Player拖给Tilia CameraRig TrackedAlias预制体中的Tracked Alias Facade中
与游戏物体的交互
利用Tilia Interactions Interactables Unity包
让手柄控制器有交互的能力:Interactors
把Interactors文件夹下的Interactions.Interactor拖到 CameraRig TrackedAlias游戏物体的左右控制器(XXXControllerAlias)中
把 Player中绑定了Velocity Tracker的左右控制器,拖入对应的Interactions.Interactor中的VelocityTracker框中
编写脚本,把SteamVR中的Action转换为VRTK的Action,继承BooleanAction(using Zinnia.Action)
在SteamVR_Action.default.GrabPinch.onChange的监听回调中:Receive(newState)
将脚本附加到左右手后,分别赋值给Interactions.Interactor中的GrabAction中
设置游戏物体
选中游戏物体在Windows中找到Zinnia选项,点击将物体转为为可交互物体
设置PrimaryAction为Follow
GrabOffset设置为Precision Point
Secondary Action中可以选中第二手柄的动作:交换、控制方向、放缩等
SnapZone功能
利用Tilia Interactions SnapZone Unity包
在SnapZone文件夹下拖出:Interactions.SnapZone预制体
把要交互(吸附)的对象的副本拖入到预制体中,然后将其转换为可交互的游戏对象
更换SnapDestination下找到高亮的Mesh,将其替换,然后Reset他的Transform
创建一个透明材质将其替换(Transparent Shader)