SteamVR开发-使用InteractionSystem实现与物体交互

交互基础 - Interactable组件
物体如何响应Hand交互事件 - InteractableHoveEventss组件和InteractableButtonEvents组件
手柄高亮的实现 - ControllerHoverHighlight组件
抓取物体 - Throwable组件
[Requireed Component] 标签的使用
Physic Material 物理材质
Interactable组件

在源码中,有两个事件
OnAttachedToHand( Hand hand )  // 当手柄抓取到物体时触发的事件
OnDetachedFromHand( Hand hand ) // 当手柄松开时触发的事件
新建一个cube,给物体添加Interactable组件,手柄就会认识这个物体。物体有了这个组件,手柄与物体间就有了交互的基础。
ControllerHoverHighlight组件
给手柄添加该组件,当手柄触碰到物体时,就会显示高亮。
ControllerHoverHighlight的属性:
High Light Material 高亮材质球
Fire Haptics On Hightlight  是否震动
这里的高亮材质球,是Vive的shader,在项目开发时,需要高亮显示的时候用得上这个shader。


 
InteractableHoveEventss组件

给要操作的物体添加该组件,当手柄移入触发时,即可触发以下事件。
事件的触发有以下几个:
OnHandHoverBegin() //当手柄移入时触发
OnHandHoverEnd() // 当手柄移出时触发
OnAttachedToHand( Hand hand ) // 当手柄抓取时触发
OnDetachedFromHand( Hand hand ) // 当手柄松开时触发
InteractableButtonEvents组件

给要操作的物体添加该脚本,当手柄移入物体时,手柄按键操作即可触发以下事件。
事件的触发有以下几个:
OnTriggerDown()
OnTriggerUp()
OnGripDown()
OnGripUp()
OnTouchpadDown()
OnTouchpadUp()
OnTouchpadTouch()
OnTouchpadRelease()
Throwable组件

给物体添加该组件,就可以实现手柄对物体抓取,同过手柄的Trigger键对物体的抓取和松开。
Throwable属性:
Attachment Flags // 设置物体与手柄的组织方式 (物体与手柄的吸附方式)
方式有几种:
1.SnapOnAttach //抓取时,物体和手柄上的某一点保持一致
2.DetachOthers //当手柄抓取物体时,该手柄上的物体就要放下。
3.DetachFromOtherHand //当手柄抓取物体时,相应的其他手柄就要放下物体。
4.ParentToHand //手柄抓取的物体将会称为Hand的子物体。
Attachment Point // 物体吸附到指定的点(gameobject)
Catch Speed Threshold // 延时,当按下Trigger键时等待的时间
Restore Original Parent // 是否保持原来的层级关系
Attach Ease In //  在抓取时有,物体吸附有缓动效果
Snap Attach Ease In Curve // 前提是选择应用缓动后,调整缓动曲线
Snap Attach Ease In Time // 前提是选择应用缓动后,调整缓动时间
两个事件
OnPickUp() //手柄抓取时物体触发
OnDetachFromHand()  //手柄松开物体时触发
[Requireed Component] 标签的使用

用法[RequireComponent( typeof( Rigidbody ) )]
添加脚本时,在类定义前,添加该标签,通过该用法,当这个类运行时Unity就会知道还要添加标签中所定义的组件。
主要是解决脚本运行时,需要的脚本引用不到的情况。
Physic Material 物理材质

给物体添加物理属性,当抓取的物体扔出时,需要一个物理的属性时,比如弹力球,这时就可以给这个弹力球的BoxCollider添加物理材质(具有弹力作用的材质),就可以实现。

猜你喜欢

转载自blog.csdn.net/u013774978/article/details/130022807
今日推荐