HTC VIVE☀️二、人物基于Player,实现与物体的交互

发布于:2022-12-23 ⋅ 阅读:(151) ⋅ 点赞:(0)

在这里插入图片描述

目录

🟥 Interactable组件

🟧 手柄高亮、震动的实现

🟨 物体响应Hand交互的事件

🟩 抓取物体


重要知识点:

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:被手柄释放实现的事件

大家还有什么问题,欢迎在下方留言!


 

在这里插入图片描述


如果你有 技术的问题 或 项目开发

都可以加下方联系方式

和我聊一聊你的故事🧡


网站公告

今日签到

点亮在社区的每一天
去签到