SteamVR中实现物体的抓取和放回功能

学习资料来源于:SteamVR视频课

在SteamVR的InteractionSystem中存在一个叫ItemPackage的模块,可以帮助我们实现道具的抓取和自动放回的效果
SteamVR中实现物体的抓取和放回功能_第1张图片SteamVR中实现物体的抓取和放回功能_第2张图片

实现方式如下

ItemPackage模块分为三个脚本
ItemPackageSpawner:实现交互的核心,在指定的感应区域内检测到抓取事件后在手柄上生成物体的实例,通过检测碰撞实现物体放回的交互功能,在感应区域呈现物体的预览和物体被抓取后的高亮轮廓。
ItemPackage:决定单双手模式,给ItemPackageSpawner提供 预览,实例,高亮轮廓 三种物体的实例。
ItemPackageReference:挂载在实际被抓取的物体上,用于建立与ItemPackage的链接,双手模式下告诉ItemPackageSpawner这两个物体是成套出现的,实现同时抓取同时放下
SteamVR中实现物体的抓取和放回功能_第3张图片

实际操作

首先我们需要准备好需要拿起的物体,课程里老师准备了一个狼牙棒和一个盾牌,其中狼牙棒制作成预览,拿起,轮廓三个预制体。
SteamVR中实现物体的抓取和放回功能_第4张图片
其中MaceItemPrefab预制体需要添加脚本
DestroyOnDetachedFromHand:物体离开手后会自动销毁
SteamVR_Skeleton_Poser:为物体添加自定义的抓取手势
ItemPackageReference:将下一步骤做好的MackItemPackage拖入使其与列表建立联系
SteamVR中实现物体的抓取和放回功能_第5张图片

然后我们在场景中新建一个空物体命名为MackPickUp并为它加上ItemPackageSpawner脚本,将MacePreview(狼牙棒预制体) 拖到它的下面当其子物体,这里需要注意MacePreview的Transform需要归零,若需要调整其位置我们可以通过调整它的父物体MackPickUp的位置来对它进行调整
SteamVR中实现物体的抓取和放回功能_第6张图片
还需要建立一个空物体并命名为MackItemPackage,将其位置归零并挂载脚本ItemPackage,然后分别将准备好的预览,拿起,轮廓三个预制体以及双手模式下另一只手出现的盾牌拖入脚本中 (注意顺序)
SteamVR中实现物体的抓取和放回功能_第7张图片
之后我们将这个准备好的预制体拖入场景中MackPickUp身上的ItemPackageSpawner脚本上
SteamVR中实现物体的抓取和放回功能_第8张图片

添加感应区域检测抓取事件
SteamVR中实现物体的抓取和放回功能_第9张图片
然后我们靠近狼牙棒按下GrabGrip键便可以拿拾取狼牙棒,靠近轮廓区域即可自动放回
SteamVR中实现物体的抓取和放回功能_第10张图片

双手模式:右手抓取狼牙棒的时候左手自动出现盾牌,放回时候会自动销毁
首先将MackItemPackage的PackageType改成Two Handed模式
再将盾牌放入Other Hand Item Prefab 中SteamVR中实现物体的抓取和放回功能_第11张图片
盾牌的属性设置如下
SteamVR中实现物体的抓取和放回功能_第12张图片
SteamVR中实现物体的抓取和放回功能_第13张图片
以上就是关于ItemPackage模块的使用,如有不懂可以参考顶部视频链接

你可能感兴趣的:(UnityVR,vr,unity,游戏引擎)