要点
1、可实现的效果:攀爬、双手持握、缩放物体等
2、VRTK中与物体交互的三种类型:Touch、Grab、Use
Touch:手柄悬停在物体上面,跟物体进行碰撞或接触
Grab:按动某一定义的按键,抓取物体
Use:通过一个事件自定义一个操作
VRTK实现与物体的交互方法
一是手动挂载相应脚本,实现物体交互
二是通过VRTK的UI配置窗口,通过在配置窗口点选想要的操作,即可配制出想要的操作
方法一:挂载脚本
本章目标
实现抓取剑
实现步骤
1、导入资源包
导入含有剑的资源包,并将剑放到合适位置
2、给物体添加VRTK_Interactable Object
为要交互的物体添加VRTK_Interactable Object组件,挂载该组件,证明该物体是可以交互的
Disable When Idle:勾选,当它在闲置时,就将该组件关闭,以节约资源
Is Grabbable / Usable:勾选后,该选项下的组件才可使用
Touch Highlight Color:悬停时高亮的颜色
Allowed Touch Controllers:响应哪个手柄的交互。Both / Left_Only / Right_Only
Hold Button To Grab:勾选意味着只有按住某个键,才可实现抓取,当松开时,物体将掉下来;取消勾选时,则是按一下,实现抓取,再按一下,取消抓取
Stay Grabbed On Teleport:勾选,则传送时,仍可抓取着物体;取消勾选,物体将在传送时掉下来
Valid Drop:在什么情况下(取决于Hold Button To Grab),当按下手柄上的Grap键时,物体可以被释放
No_Drop:当我们松开或按下抓取键时,不释放
Drop_Anywhere:释放在任何地方,类似于扔出的效果
Drop_Valid Snap Drop Zone:将物体释放在Snap Drop区域中,类似于InteractionSystem中的ItemPackage机制,当我们松开抓取按键时,将会把物体放在我们指定的一个区域,如果重合,则该物体会被吸附在该区域
Grab Attach Mechanic Scrip:抓取吸附机制的脚本,类似于上节的Policy List,该脚本不仅实现将被抓取物体成为子物体效果,也可实现其他抓取效果,在VRTK—Scripts—Interactions—GrabAttachMechanics里有相应脚本
Secondary Grab Action Script:二级抓取的控制脚本,该脚本可实现另一只手参与进来的效果,如双手持握,缩放
3、给物体添加碰撞体
给物体添加碰撞体,规定一个碰撞的区域
4、给手柄挂载VRTK_Interact Grab
挂载该组件后,并自动挂载了VRTK_Interact Touch、、VRTK_ControllerEvents,并且VRTK_Interact Touch源代码自动添加了VRTK_ControllerActions组件
4、给手柄添加VRTK_Interact Use
该脚本实现了选中的效果
以上效果展示:
5、当抓起剑时,让手柄消失
a、选中剑物体,添加VRTK_Interaction Controller Appearance脚本组件
该组件控制在VRTK的三种交互形式中,控制器的显示和消失
b、勾选在某种状态下,Hide Controller On...,即可实现控制器的显示和消失
Hide Delay On Use:控制器隐藏的延迟时间
6、给手柄添加VRTK_Interact Haptics,实现对手柄的反馈
haptics:触感
Strength On ..:力度 0-1
Duration On ..:持续时间
Interval On ..:间隔时间 / 频率
方法二:UI配置窗口
选中物体,Windows—VRTK—Setup Interactable Object,此时该选项卡无法拖动往下看,将该选项卡拖至Scene层,作为标签页,即可查看全部内容
Child Of Controller:把它作为控制器的子物体
Climbable:作为可攀登的物体
Custom Joint:作为节点的配置
Control Direction:关于方向的控制
Axis Scale:在某个轴向上的缩放
Setup selected object:点击后,自动将配置的脚本添加到物体上去,实现类似第一种方法的展示效果
Enjoy。