学习了VRTK_Example_5之后当然要自己实现一个抓取物体,记录一下以后当回顾
把台上的球抓着,然后扔到框框里面。很简单。
把原来Example中[ExampleSceneScripts]和[VRTK_SDKManager]做成Prefabs,用的时候直接拖进来,反正也不会变。
手柄上添加的组件
VRTK_InteractGrab
这个脚本用来抓取物体, 抓的按键在VRTK_ControllerEvent 脚本中设置
controllerAttachPoint: 被抓的物体,被附加在哪个物体上, 默认是手柄的圆环处
HideController On Grab 抓住物体时,隐藏手柄
Hide Controller Delay 延迟几秒后隐藏手柄
Grab Precognition 提前预判抓取物体 对应快速运动的物体,我们可能需要提早按下抓取按键才能抓住物体, 数值是提前的时间值,值越大, 可提前的抓取时间越长
Throw Multiplier: 把物体扔出去时,速度的倍增值
Create Rigid Body When Not Touch : 在碰到物体时才创建RigidBody 默认情况下手柄也创建Rigidbody,这就可以和物体在物理上
碰撞.
VRTK_InteractTouch
和物体接触
Hide Controller On Touch 接触物体时隐藏物体
Hide Controller Delay : 接触物体后延迟几秒后隐藏物体
Global Touch HighLight Color 如果被接触的物体上未设置接触高亮颜色,则用此颜色来对改变目标的颜色
Custom RigidBody Object 自定义用于判定接触的刚体物体, 如果没有的话,会自动在子层级创建一个刚体物体
交互物体上应该添加的脚本
VRTK_InteractableObject 需要有rigidbody组件和collider组件
1 Touch options 接触
HighLight OnTouch 接触时高亮显示物体颜色
Touch HightLight Color 高亮的颜色
Rumble On Touch 接触时的反馈震动 强度和时间
Allow Touch Controller 规定哪个手柄可以接触这个物体
Hide Controller On Touch 覆盖是否隐藏手柄的设置 default是根据手柄的设置
2 Grab Options 抓取
IsGrabbable 是否可以被抓取
Is droppable 松开时是否掉落
Is swappable 是否可替换 如果不行 则必须先把物体丢掉
Hold Button To Grab 按住才能保证物体不掉落
Grab Override Button 覆盖手柄的抓取按键设置
Rumble On Touch 接触时震动 同上
Allowed Grab Controllers规定哪个手柄可以接触这个物体
Precision Grab 精准抓取 如果是,则抓取的位置是刚接触到物体的点,而不是默认的物体中心位置
Right Left Snap Handle 被抓物体的抓取点, 该游戏物体应该放在被抓物的子层级下
StayGrabbed On Teleport 传送后仍然抓住物体 否则物体丢掉
GrabAttach Mechanic 被抓物体的依附机制 Fixed_joint 链接到fixed Joint 上,这是比较常用的物理上的固定位置链接
Spring_joint 和Fixed Joint类似 但是有点手臂关节,可以拉伸弯曲伸直, track Object 不靠joint 链接 而是让被抓物跟随手柄的位置方向
, rotator _Track 比较适合门,车驾驶把手这种 有固定转轴的物体,它只能在受转轴的约束下,根据手柄的抓取位置来调整旋转, child of controller 作为手柄的子物体, climbable 固定不动的交互物体
3 Use options 使用
Use only if Grabbed 只有在被抓取时才可以被使用
Hold Button to Use 长按手柄按键才可以使用
Use Override Button 自定义操作按键
Pointer activates Use Action 如果打钩 当手柄发射的激光落在交互物体上,于此同时如果Holon to use没有打钩,则使用该物体, Holon to use打钩了,则要按住使用按键才可以使用该物体
该脚本可以 为交互物体增加一个外轮廓颜色
The Fixed Joint Grab Attach script is used to create a simple Fixed Joint connection between the object and the grabbing object.The Swap Controller Grab Action provides a mechanism to allow grabbed objects to be swapped between controllers