【Oculus Interaction SDK】(三)限制可操作物体的移动 / 旋转
前言
前段时间 Oculus 的 SDK 频繁更新,很多已有的教程都不再适用于现在的版本了。本系列文章的主要目的是记录现版本常见功能的实现方法,便于自己后续开发。当然,不排除我文章刚写完 SDK 又变了的可能性,所以如果有人发现文章的内容已经不适用于新版本了,也可以留评论或者私信我,我会持续更新文章内容。
当前适用版本:
- Unity 版本:2021.3.7f1c1
- Oculus Interaction SDK 版本:47.0
文章最近更新日期:2023.02.08
给可操作物体添加限制
在这里依旧使用之前文章中制作好的物体 Cube(Both)进行测试,不清楚的可以看一下这篇文章
【Oculus Interaction SDK】(一)设置 VR 相机与控制器 && 实现简单的抓取功能 - 千叶Christa - 博客园 (cnblogs.com)
复制出一个物体,并修改名称为 Limited Movement
之前在添加 Grabbable 组件的时候,我们都没有给组件任何参数,那是因为项目运行时会自动添加一个单手操作器 One Grab Free Transformer
我们可以通过自己添加单手操作器的方式来限制物体的运动
限制移动
给测试物体添加组件 One Grab Translate Transformer
,然后把这个组件赋值给 Grabbable 的 One Grab Transformer
测试物体原本的位置是(0,1,0.3),我想让它仅在 X 轴上移动,并且限制它的移动范围为 (-0.2,0.2),那么需要控制三个轴:Y 轴与 Z 轴锁定在原位置,X 轴给出活动范围
注:这里设置的参数对应物体的 LocalPosition
完成后效果如下
限制旋转
给测试物体添加组件 One Grab Rotate Transformer
,然后把这个组件赋值给 Grabbable 的 One Grab Transformer
在只调整旋转轴(Rotation Axis),不给旋转锚点、不限制角度的情况下,物体会自身中心为旋转锚点,向对应方向进行旋转
效果如下:
如果给定一个旋转中心(Pivot),该物体就会围绕旋转中心进行旋转(为了方便演示,对测试物体进行了缩放,同时包含了角度限制)
效果如下:
参考资料
Two Hand manipulation and Restricted Grab - Oculus Interaction SDK - PART 2 - YouTube