HTC VIVE丨4. 人物基于Player,实现与物体的交互

重要知识点:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值