SteamVR框架工具(4):可交互对象+抓取交互对象+使用可交互对象+自动抓取可交互对象

1、VRTK_InteractableObject:可交互对象

(1)定义:可交互对象脚本被添加到需要用(如控制器)来交互的任何游戏对象上。

(2)参数:

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就扔的很近)。

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将来会被自定义编辑器代替)。
2、VRTK_InteractTouch:触碰
(1)定义:触摸交互脚本被添加到[CameraRig] 预制里的控制器对象上。

(2)参数:
Hide Controller On Touch: 当有效触碰发生时隐藏控制器模型
Hide Controller Delay:触摸隐藏控制器之前的等待秒数。
Global Touch Highlight Color: 如果交互对象被触碰就能高亮显示,没有设置本地颜色的话就使用全局颜色。
发出的事件:
ControllerTouchInteractableObject****:当有效对象被碰到时发出ControllerUntouchInteractableObject: 当一个有效对象不再被触碰时发出相关例子:框架工具中005场景

3、VRTK_InteractGrab:抓取交互对象
(1)定义:交互抓取脚本被 添加到[CameraRig] 预制里的控制器对象上,并且需要添加VRTK_ControllerEvents脚本用来监听抓取和释放交互游戏对象的控制器按钮事件。它监听 AliasGrabOn和AliasGrabOff 事件来确定对象合适应该被抓取和释放。
注意:
1、控制器对象也需要添加VRTK_InteractTouch 脚本用来确定何时一个可交互对象被触摸到。只有有效的被触摸对象才能被抓取。
2、如果控制器触碰到一个包含VRTK_InteractableObject脚本并且isGrabbable 标志位设置为真的游戏对象,该对象就可以被抓取。
3、如果有效可交互对象是可抓取的,按下控制器上所设置的抓取按钮(默认是Trigger按钮)将抓取和对齐对象到控制器上,并且直到抓取按钮松开才会被释放。
4、当控制器抓取按钮松开时,如果可交互对象是可抓取的,它将会被按一定速率沿着控制器松开时的方向进行推动,这就模拟了对象投掷
5、可交互对象需要碰撞体用来激活触发和一个刚体用来拾取它们并在游戏世界中四处移动它们。

(2)参数:可以看到默认添加了事件,代理,触摸脚本

Controller Attach Point:控制器模型上用来吸附抓取的对象的刚体点(默认为tip)
Hide Controller On Grab: 当有效抓取发生时隐藏控制器模型。
Hide Controller Delay:在抓取时隐藏控制器之前的等待时间秒数。
Grab Precognition:预先抓取: 在抓取按钮按下时和控制器正在抓取某个东西时之间时间量。例如,如果一个对象下落过快,因为人的反应时间可能很难及时按下抓取按钮来抓住对象。这个值越高 意味着抓取键可以越提前在控制器碰到对象以及碰撞发生前按下,如果抓取键仍然被按下(如果抓取对象需要持续按键抓取的话),则抓取动作就会成功。
Throw Multiplier:投掷乘数:用来乘以对象被扔出时速度的量。在放大 CameraRig 来模拟能够把物体扔的更远时是很有用的。
Create Rigid Body When Not Touching:如果勾选,当抓取按钮按下时,如果控制器没有碰到一个可交互的对象,那么添加到控制器上的刚体就允许控制器去推动周围其他的刚体对象。
发出事件如下:·
ControllerGrabInteractableObject: 当有效对象被抓取时发出
ControllerUngrabInteractableObject: 当有效对象从抓取到放开时发出
4、VRTK_InteractUse:使用可交互对象
(1)定义:交互使用脚本被 添加到[CameraRig] 预制里的控制器对象上,并且需要添加VRTK_interactTouch及 VRTK_ControllerEvents脚本用来监听使用和停止使用交互游戏对象的控制器按钮事件。它监听 AliasUseOn 和AliasUseOff 事件来确定对象合适应该被使用和停止使用。控制器对象也需要添加VRTK_InteractTouch脚本来决定何时可交互对象被触碰。只有有效的触碰对象才能被使用。如果控制器触碰到一个包含VRTK_InteractableObject 脚本且isUsable标志位设置为真,这个对象就能被使用。

(2)参数:
Hide Controller On Use:当有效使用动作开始时隐藏控制器模型
Hide Controller Delay:在使用之前,隐藏控制器的等待时间秒数发出事件:
ControllerUseInteractableObject: 当一个有效对象开始被使用时发出
ControllerUnuseInteractableObject: 当一个有效对象停止被使用时发出相关例子:框架工具中006/008场景

5、VRTK_ObjectAutoGrab:自动抓取可交互对象
(1)定义:通过把VRTK_ObjectAutoGrab脚本加到控制器上并指定应该默认抓取的对象,来让特定控制器能自动抓取可交互对象。自动抓取对象脚本添加到[CameraRig] 预制里的控制器对象上,控制器对象还需要添加VRTK_InteractGrab 脚本。

(2)参数:
Object To Grab:抓取的对象):在游戏开始时被控制器抓取的游戏对象(在场景或者预制里)。
Clone Grabbed Object:复制被抓取对象: 如果勾选,Object To Grab(抓取的对象)将被复制到一个新对象并添加到控制器上,而被复制的对象留在场景里。这在两个控制器都需要抓取同样的对象时是需要的,因为单个对象 不能被不同的控制器同时抓取。如果被抓取的对象是一个预制就也需要被复制,因为它需要存在于场景中被抓取。相关例子:框架工具中026场景

转载出处:http://www.jianshu.com/p/68aaa226e234

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容