新提醒SteamVR Unity工具包三控制器交互.docx
- 文档编号:10514630
- 上传时间:2023-02-17
- 格式:DOCX
- 页数:7
- 大小:19.22KB
新提醒SteamVR Unity工具包三控制器交互.docx
《新提醒SteamVR Unity工具包三控制器交互.docx》由会员分享,可在线阅读,更多相关《新提醒SteamVR Unity工具包三控制器交互.docx(7页珍藏版)》请在冰豆网上搜索。
新提醒SteamVRUnity工具包三控制器交互
【新提醒】【SteamVRUnity工具包(三):
控制器交互】
可用脚本参数如下
TouchInteractions触摸交互
·HighlightOnTouch:
如果勾选,这个对象在控制器触摸它时就会高亮。
·TouchHighlightColor:
对象被触摸时高亮的颜色。
颜色可以被任何全局的设置颜色来覆写(例如InteractTouch脚本)。
·RumbleOnTouch:
控制器触碰对象时触发振动反馈,x表明时长,y表明震动强度。
(x和y将来会被自定义编辑器代替)。
GrabInteractions抓握交互
·IsGrabbale:
决定对象是否能被抓握。
·IsDroppable:
决定对象在被控制器抓握后能否被放下。
如果没有勾选,一旦用控制器按钮拾起了物品就不能放下了。
但是如果抓握的机制是关节(Fixed_Joint)的话,当对象受力足够大之后关节断开,物品也就被放下了。
所以最好使用控制器子物体的抓握机制(Child_Of_Controller)来防止这种情况。
·HoldButtonToGrab:
如果勾选,控制器就需要持续按住设置为抓握的按钮来保持抓握状态。
如果没有勾选,抓握的按钮切换抓握行为通过按下一次抓取,再按一次释放。
·OnGrabCollisionDelay:
当对象被第一次抓取时延迟碰撞的作用的时间量。
这在防止游戏对象被抓取时卡到另外一个物体时很有用。
·GrabSnapType(抓取对齐方式):
这个设置了当对象呗抓取时的对齐方式oSinmple_Snap把抓取的对象的中心位置放到控制器的附加点上(默认是控制器的tip)oRotation_Snap调整抓取的对象到一个指定旋转,由Vector3类型的SnapToRotation变量提供。
oPrecision_Snap没有把对象的位置对齐到控制器,而是用控制器触摸对象时的点来拾起对象(就像真实生活中用手拿起东西一样)。
oHandle_Snap允许一个空的GameObject作为可交互对象的子物体来用作参考对齐点。
抓取时,空GameObject的旋转和位置用来定位抓取的可交互物体到控制器。
·SnapToRotation:
表示欧拉角的Vector3变量,决定在对齐时相对于控制器的对象的旋转。
在拾取枪或剑的时候很有用,对控制器的相对旋转对便于使用是很重要的。
·SnapToPosition:
一个Vector3变量,决定对象对齐控制器时的相对位置。
·SnapHanlde:
一个由空游戏对象提供的Transform,它必须是被抓取物品的子物体并用作一个被拾取物品相对于进行抓取的控制器的旋转和位置的定位点。
·RumbleOnGrab:
控制器抓取对象时触发振动反馈,x表明时长,y表明震动强度。
(x和y将来会被自定义编辑器代替)。
GrabMechanics抓握机制
·GrabAttachType:
这决定了抓取的物品在被抓取时怎样被添加到控制器上。
oFixedJoint(固定关节)用一个固定的关节把对象附加到控制器上,意味着附加对象以完全1:
1的方式追踪控制器的位置和旋转。
oSpringJoint(弹性关节)用一个弹性关节把对象添加到控制器上,意味着物体和控制器之间有一些弹性,弹力驱动物体。
在想要牵引一个物体而不是直接把物体对齐到控制器上是很有效的。
就感觉物体有运动阻力一般。
oTrackObject(追踪对象)不是通过关节来把对象附加到控制器上,而是确保对象追踪控制器的方向,这适用于铰链式关节。
oChildOfController(控制器子物体)简单地让对象成为抓取控制器的子物体,所以自然地追踪了控制器运动位置。
·DetachThreshold(分离阈值):
当对象从被抓取的控制器分离时的力值。
如果控制器试着施加一个高于这个阈值的力到对象上(从另一个对象上拉它或者推它到另一个对象),然后保持对象到抓取控制器的关节就将断开并且对象将不能再被抓起了。
这在TrackedObject抓取机制下也有效,只是这个值确定断开抓取钱控制器可以离对象多远。
·SpringJointStrength(弹簧关节力):
弹簧力保持对象到控制器。
小数值将意味着弹簧很松并且对象需要一个更大的力去移动,大数值就意味着弹簧很紧,小点的力就可以移动它。
·SpringJointDamper(弹簧关节阻尼):
弹簧的阻尼量在使用弹簧关节抓取机制下有效。
在移动被关节的交互对象时,值越高震动效果越小。
·ThrowMuliplier(投掷倍数):
值用来乘以给定对象被扔出时的速度值。
这还可以被用来连同InteractGrab脚本的ThrowMultiplier来让对象被扔的比平常更远(或者输入的值小于1就扔的很近)。
UseInteractions使用交互
·IsUsable(是否可用):
决定对象是否可以被使用·HoldButtonToUse:
如果勾选,控制器上的使用(use)按钮需要被持续按下来保持使用。
如果没有勾选,use按钮用一次按钮按下来启动使用和再一次按下来停止使用。
·PointerAvtivatesUseAction:
如果勾选,当一个世界光束指针(由控制器投射)碰到了交互对象,如果对象的HoldButtonToUse没有勾选的话,当指针在对象上的时候就会运行对象的StartUsing方法,指针移开失效就会运行StopUsing方法。
这个选项在被勾选以后,为了防止在用一个指针来使用对象时发生不必要的传送,就不会抛出目标点设置(DestinationSet)事件。
·RumbleOnUse:
控制器触碰对象时触发振动反馈,x表明时长,y表明震动强度。
(x和y将来会被自定义编辑器代替)。
下面的事件是被发送的:
·InteractableObjectTouched:
当另一个对象碰到当前对象时发出事件。
·InteractableObjectUntouched:
当其他对象停止触碰当前对象时发出事件。
·InteractableObjectGrabbed:
当其他对象(如控制器)抓握当前对象时发出事件。
·InteractableObjectUngrabbed:
当其他对象停止抓握当前对象时发出事件。
·InteractableObjectUsed:
当其他对象(控制器)使用当前对象时发出事件。
·InteractableObjectUnused:
当其他对象停止使用当前对象时发出事件。
发出的事件有效信息载体包涵:
·interactingObject:
初始化交互的对象(如控制器)。
脚本基本是提供一个简单的机制来区分游戏世界中的对象是否能被抓取或者使用,最好是把这个脚本看做是一个基类来派生出功能更丰富的脚本。
VRTK_InteractableObject的例子可以看SteamVR_unity_Toolkit/Examples/005_Controller_BasicObjectGrabbing.场景。
这个场景还在控制器上使用了VRTK_InteractTouch和VRTK_InteractGrab脚本,来展示一个交互对象怎样被抓取和对齐到控制器以及在游戏世界中扔出。
另外一个例子在场景SteamVR_Unity_Toolkit/Examples/013_Controller_UsingAndGrabbingMultipleObjects。
这个场景展示了更多对象,可以被按住按钮抓取或者切换按钮点击来抓取的对象,还有对象通过切换它们的Using状态来展示多种物品可同时被开启。
TouchingInteractableObjects(VRTK_InteractTouch)触摸交互脚本被添加到[CameraRig]预制里的控制器对象上。
可用参数如下:
·HideControllerOnTouch:
当有效触碰发生时隐藏控制器模型·HideControllerDelay:
触摸隐藏控制器之前的等待秒数。
·GlobalTouchHighlightColor:
如果交互对象被触碰就能高亮显示,没有设置本地颜色的话就使用全局颜色。
发出事件如下:
·ControllerTouchInteractableObject:
当有效对象被碰到时发出·ControllerUntouchInteractableObject:
当一个有效对象不再被触碰时发出
发出事件有效载体信息包含:
·controllerIndex(控制器序号):
正在交互的控制器的序号·Target(目标):
控制器正在交互的对象的GameObject
VRTK_InteractTouch的例子参见SteamVR_Unity_Toolkit/Examples/005_Controller/BasicObjectGrabbing场景。
场景演示了添加了VRTK_InteractableObject脚本的对象被控制器触碰时能够高亮显示交互对象的能力。
抓取交互对象(VRTK_InteractGrab)
交互抓取脚本被添加到[CameraRig]预制里的控制器对象上,并且需要添加VRTK_ControllerEvents脚本用来监听抓取和释放交互游戏对象的控制器按钮事件。
它监听AliasGrabOn和AliasGrabOff事件来确定对象合适应该被抓取和释放。
控制器对象也需要添加VRTK_InteractTouch脚本用来确定何时一个可交互对象被触摸到。
只有有效的被触摸对象才能被抓取。
如果控制器触碰到一个包含VRTK_InteractableObject脚本并且isGrabbable标志位设置为真的游戏对象,该对象就可以被抓取。
如果有效可交互对象是可抓取的,按下控制器上所设置的抓取按钮(默认是Trigger按钮)将抓取和对齐对象到控制器上,并且直到抓取按钮松开才会被释放。
当控制器抓取按钮松开时,如果可交互对象是可抓取的,它将会被按一定速率沿着控制器松开时的方向进行推动,这就模拟了对象投掷。
可交互对象需要碰撞体用来激活触发和一个刚体用来拾取它们并在游戏世界中四处移动它们。
可用脚本参数如下:
·************************************************************·ControllerAttachPoint:
控制器模型上用来吸附抓取的对象的刚体点(默认为tip)·HideControllerOnGrab:
当有效抓取发生时隐藏控制器模型。
·HideControllerDelay:
在抓取时隐藏控制器之前的等待时间秒数。
·GrabPrecognition(预先抓取):
在抓取按钮按下时和控制器正在抓取某个东西时之间时间量。
例如,如果一个对象下落过快,因为人的反应时间可能很难及时按下抓取按钮来抓住对象。
这个值越高意味着抓取键可以越提前在控制器碰到对象以及碰撞发生前按下,如果抓取键仍然被按下(如果抓取对象需要持续按键抓取的话),则抓取动作就会成功。
·ThrowMultiplier(投掷乘数):
用来乘以对象被扔出时速度的量。
在放大CameraRig来模拟能够把物体扔的更远时是很有用的。
·CreateRigidBodyWhenNotTouching:
如果勾选,当抓取按钮按下时,如果控制器没有碰到一个可交互的对象,那么添加到控制器上的刚体就允许控制器去推动周围其他的刚体对象。
发出事件如下:
·ControllerGrabInteractableObject:
当有效对象被抓取时发出·ControllerUngrabInteractableObject:
当有效对象从抓取到放开时发出
发出事件有效载体信息包含:
·controllerIndex:
正在交互的控制器序号·target:
控制器正在交互的对象的GameObject
VRTK_InteractGrab的例子可以参见SteamVR_Unity_Toolkit/Examples/005_Controller/BasicObjectGrabbing场景。
场景演示了抓取挂有VRTK_InteractableObject脚本的可交互对象。
对象可拾起可抛出。
更复杂一点的例子可以参见场景SteamVR_Unity_Toolkit/Examples/013_Controller_UsingAndGrabbingMultipleObjects,这里演示了每个控制器都能单独抓取和使用对象并且对象也可以被同时切换它们的使用状态。
SteamVR_Unity_Toolkit/Examples/014_Controller_SnappingObjectsOnGrab场景演示了不同的对齐抓取的对象到控制器上的机制。
使用可交互对象(VRTK_InteractUse)
交互使用脚本被添加到[CameraRig]预制里的控制器对象上,并且需要添加VRTK_ControllerEvents脚本用来监听使用和停止使用交互游戏对象的控制器按钮事件。
它监听AliasUseOn和AliasUseOff事件来确定对象合适应该被使用和停止使用。
控制器对象也需要添加VRTK_InteractTouch脚本来决定何时可交互对象被触碰。
只有有效的触碰对象才能被使用。
如果控制器触碰到一个包含VRTK_InteractableObject脚本且isUsable标志位设置为真,这个对象就能被使用。
可用脚本参数如下:
·HideControllerOnUse:
当有效使用动作开始时隐藏控制器模型·HideControllerDelay:
在使用之前,隐藏控制器的等待时间秒数
发出事件如下:
·ControllerUseInteractableObject:
当一个有效对象开始被使用时发出·ControllerUnuseInteractableObject:
当一个有效对象停止被使用时发出
发出的事件的有效载体信息包含:
·controllerIndex:
正在交互的控制器序号·target:
控制器正在交互的对象的GameObject
例子参见SteamVR_Unity_Toolkit/Examples/006_Controller_UsingADoor场景,模拟打开一扇门和关上。
地上也有一个立方体可以被抓取来展示可交互对象怎么被使用或者抓取。
另一个例子可参见SteamVR_Unity_Toolkit/Examples/008_Controller_UsingAGrabbedObject场景,它展示了对象可以用一个按钮抓取并用另一个按钮使用。
自动抓取可交互对象(VRTK_ObjectAutoGrab)
通过把VRTK_ObjectAutoGrab脚本加到控制器上并指定应该默认抓取的对象,来让特定控制器能自动抓取可交互对象。
自动抓取对象脚本添加到[CameraRig]预制里的控制器对象上,控制器对象还需要添加VRTK_InteractGrab脚本。
可用脚本参数如下:
·ObjectToGrab(抓取的对象):
在游戏开始时被控制器抓取的游戏对象(在场景或者预制里)。
·CloneGrabbedObject(复制被抓取对象):
如果勾选,ObjectToGrab(抓取的对象)将被复制到一个新对象并添加到控制器上,而被复制的对象留在场景里。
这在两个控制器都需要抓取同样的对象时是需要的,因为单个对象不能被不同的控制器同时抓取。
如果被抓取的对象是一个预制就也需要被复制,因为它需要存在于场景中被抓取。
例子参见SteamVR_Unity_Toolkit/Examples/026_Controller_ForceHoldObject场景。
这里每个控制器自动抓取了一把剑,同时为了防止剑被扔掉,剑被永久的添加到用户的控制器上。
申请成为译员+扫描下方二维码关注游戏蛮牛官方微信~每日都有精选干货与你分享呦~本文由蛮牛译馆倾情奉献,翻译:
一曲流心,如有问题请及时联系,除合作社区及合作媒体外,XX。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新提醒SteamVR Unity工具包三控制器交互 提醒 SteamVR Unity 工具包 控制器 交互
![提示](https://static.bdocx.com/images/bang_tan.gif)