重要知识点:
1、交互的基础:Interactable组件
2、手柄高亮的实现:ControllerHoverHighlight组件
3、物体如何相应Hand交互事件:InteractableHoverEvents组件和InteractableButtonEvents组件
4、抓取物体:Throwable组件
5、[RequireComponent]标签的使用
6、如何为物体添加Physics Material
一、Interactable组件
所有交互最基础的组件(所有要交互的UI、物体必添加)。
添加后相当于告诉系统,该物体可以与手柄进行交互。
二、手柄高亮、震动的实现
Hand下两个物体的ControllerHoverHighlight组件,包含高亮效果的Material,更改其Material便可改变手柄高亮效果。
FireHapticsOnHightlight:勾选后,当手柄接触物体时,手柄高亮、触发震动
控制震动时间函数:
...GetComponent<Hand>().controller.TriggerHapticPulse(500);
三、物体响应Hand交互的事件
InteractableHoverEvents:挂载到要交互的物体上,当手柄碰到该物体,基于碰撞的不同阶段,触发该物体不同事件。
InteractableButtonEvents:挂载到任意上,只要按下相应的键,就触发相应事件。
脚本解析:
1、InteractableHoverEvents组件
On Hand Hover Begin:当手柄接触到物体时(事件触发,一帧);
On Hand Hover End:悬停结束时调用(类似OnTriggerExit,一帧)
On Attached To Hand:附加到手柄上时调用
On Detached From Hand:从手柄上分离时调用(一帧)
2、InteractableButtonEvents组件
对应事件绑定你想触发的方法即可。
四、抓取物体
给要被拾取起来的物体添加Throwable脚本,即可完成该物体的拾取,无需进行其它操作。
记得检查物体要有rigidbody、取消collider的istrigger。
Attachment Flags:抓取实现效果
SnapOnAttach:物体吸附于手柄某一点
DetachOthers:Unity设定一只手可抓取多个物体,勾选此项意味着释放现在及以前抓到的所有物体(抓不到当前物体)
DetachFromOtherHand:这个物体将会从其他控制器上脱离
ParentToHand:该物体将成为手的子物体
Attachment Point:指定一个坐标(物体坐标等),让它跟我们抓取的物体坐标保持一致,让物体与它吸附
Catch Speed Threshold:按下Trigger后延迟一定时间,实现物体的吸附
Restore Original Parent:松开物体后,该物体是否跟父物体保持原有的层级关系。勾选则保持原有关系
Attach Ease In:抓取时是否有缓动,即物体慢慢吸附到指定物体上
Snap Attach Ease In Curve:缓动类型
Snap Attach Ease In Time:缓动时间
On Pick Up:拿起时事件
On Detach From Hand:被手柄释放实现的事件
原文链接:https://blog.csdn.net/weixin_38239050/article/details/81260151