VRTK交互脚本解析之VRTK_InteractableObject


在steam vr的VRTK插件中有一个非常重要的脚本名为VRTK_InteractableObject,当物体需要和手柄进行交互时就会使用到该脚本,要将该脚本绑定到交互的物体上。

下面讲该脚本的功能,主要从以下几个方面讲:可交互对象+抓取交互对象+使用可交互对象+自动抓取可交互对象


Touch Interactions:触摸交互

Highlight On Touch:如果勾选,这个对象在控制器触摸它时就会高亮。

Touch Highlight Color:对象被触摸时高亮的颜色。颜色可以被任何全局的设置颜色来覆写(例如InteractTouch 脚本)。

Rumble On Touch:控制器触碰对象时触发振动反馈,x表明时长,y表明震动强度。(x和y将来会被自定义编辑器代替)。


Grab Interactions:抓握交互

Is Grabbale:决定对象是否能被抓握。

Is Droppable: 决定对象在被控制器抓握后能否被放下。如果没有勾选,一旦用控制器按钮拾起了物品就不能放下了。但是如果抓握的机制是关节(Fixed_Joint)的 话,当对象受力足够大之后关节断开,物品也就被放下了。所以最好使用控制器子物体的抓握机制(Child_Of_Controller)来防止这种情况。

Hold Button To Grab:如果勾选,控制器就需要持续按住设置为抓握的按钮来保持抓握状态。如果没有勾选,抓握的按钮切换抓握行为通过按下一次抓取,再按一次释放。


Grab Mechanics:抓握机制

Grab Attach Type:这决定了抓取的物品在被抓取时怎样被添加到控制器上。

o Fixed Joint(固定关节)用一个固定的关节把对象附加到控制器上,意味着附加对象以完全1:1的方式追踪控制器的位置和旋转。

 

 o Spring Joint(弹性关节)用一个弹性关节把对象添加到控制器上,意味着物体和控制器之间有一些弹性,弹力驱动物体。在想要牵引一个物体而不是直接把物体对齐到控制器上是很有效的。就感觉物体有运动阻力一般。

 

 o Track Object (追踪对象)不是通过关节来把对象附加到控制器上,而是确保对象追踪控制器的方向,这适用于铰链式关节。

 

 o Child Of Controller (控制器子物体)简单地让对象成为抓取控制器的子物体,所以自然地追踪了控制器运动位置。


Detach Threshold(分离阈值): 当对象从被抓取的控制器分离时的力值。如果控制器试着施加一个高于这个阈值的力到对象上(从另一个对象上拉它或者推它到另一个对象),然后保持对象到抓取控制器的关节就将断开并且对象将不能再被抓起了。这在Tracked Object抓取机制下也有效,只是这个 值确定断开抓取钱控制器可以离对象多远。

Spring Joint Strength(弹簧关节力):弹簧力保持对象到控制器。小数值将意味着弹簧很松并且对象需要一个更大的力去移动,大数值就意味着弹簧很紧,小点的力就可以移动它。

 

Spring Joint Damper(弹簧关节阻尼):弹簧的阻尼量在使用弹簧关节抓取机制下有效。在移动被关节的交互对象时,值越高震动效果越小。

 

Throw Muliplier(投掷倍数):值用来乘以给定对象被扔出时的速度值。这还可以被用来连同Interact Grab脚本的Throw Multiplier来让对象被扔的比平常更远(或者输入的值小于1就扔的很近)。


Use Interactions 使用交互

Is Usable(是否可用):决定对象是否可以被使用

Hold  Button To Use:如果勾选,控制器上的使用(use)按钮需要被持续按下来保持使用。如果没有勾选,use按钮用一次按钮按下来启动使用和再一次按下来停止使用。

 

Pointer Avtivates Use Action: 如果勾选,当一个世界光束指针(由控制器投射)碰到了交互对象,如果对象的Hold Button To Use没有勾选的话,当指针在对象上的时候就会运行对象的StartUsing方法,指针移开失效就会运行StopUsing方法。这个选项在被勾选以后,为了防止在用一个指针来使用对象时发生不必要的传送,就不会抛出目标点设置( Destination Set )事件。

 

Rumble On Use:控制器触碰对象时触发振动反馈,x表明时长,y表明震动强度。(x和y将来会被自定义编辑器代替)


本文主要内容来自网络,我只是添加部分注释,若有理解错误之处,欢迎指正。





猜你喜欢

转载自blog.csdn.net/alayeshi/article/details/78850210