【Oculus Interaction SDK】(三)限制可操作物体的移动 / 旋转
前言
这篇文章是【Oculus Interaction 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),该物体就会围绕旋转中心进行旋转(为了方便演示,对测试物体进行了缩放,同时包含了角度限制)

效果如下:

参考资料
https://www.youtube.com/watch?v=P0rbFHWpKnA
【Oculus Interaction SDK】(三)限制可操作物体的移动 / 旋转的更多相关文章
- Unity3d 控制物体移动、旋转、缩放
在Unity中通过利用 Input Manager(输入管理器)可以很简单的实现对一个物体进行移动.旋转.缩放操作. 演示代码: //通过虚拟轴控制物体移动.旋转.缩放 public class Mo ...
- Android SDK三种更新失败及其解决方法
更新Android SDK,居然失败了三次. 1.第一次失败 出现Failed to fetch URL错误提示 Failed to fetch URL https://dl-ssl.google.c ...
- (20)C++项目练习三--------【运动物体视频检测跟踪系统】
1.功能点 (1)视频监控显示 (2)移动物体标定跟踪(轨迹显示) (3)实时视频保存(以时间戳形式) (4)移动物体触发视频保存.报警 (5)视频文件分类.回放.搜索 进行中............ ...
- sdk(输入驱动物体 驱动属性 被驱动物体 被驱动属性 驱动数值 一键搞定驱动),当你的目标体很多展开会卡的时候使用这个
import maya.cmds as mc def sdksomething( sdk_obj="", sdkAttr=" ...
- Unity3D 物体跟随鼠标旋转
float speed=1000f; void Update () { if (Input.GetMouseButton (0)) { transform.Rotate (0,-Input.GetAx ...
- unity发布安卓 手指控制物体缩放和旋转
直接帮到物体的身上就可以了 using UnityEngine; using System.Collections;using System.IO;public class hehe : MonoBe ...
- Unity3D 几个基本动画(控制物体移动、旋转、缩放)
Transform基本移动函数: 1.指定方向移动: //移动速度 float TranslateSpeed = 10f; //Vector3.forward 表示"向前" tra ...
- Unity 3D 中实现对物体 位置(position) 旋转(rotation) 大小(scale) 的全面控制
今天分享一些基础控制的脚本 1.位置(Position): 控制位置很简单,首先要知道要在xyz哪几个轴上移动,确定好后定义代表着那些轴的移动变量,速度(m_speed在函数外定义为全局变量)然后通过 ...
- 【three.js第三课】鼠标事件,移动、旋转物体
1.下载three.js的源码包后,文件夹结构如下: 2.在[three.js第一课]的代码基础上,引入OrbitControls.js文件,此文件主要用于 对鼠标的操作. 该文件位置:在文件结构中 ...
- OCulus Rift 游戏开发六原则
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/46685477 作者:car ...
随机推荐
- 【题解】[ARC113C] String Invasion
题面传送门 解决思路 题目大意是给你一个字符串 \(s\) ,定义一次操作为对于长度为 \(3\) 的一个子段,满足 \(s_i=s_{i+1}\ne s_{i+2}\),则可以将 \(s_{i+2} ...
- 打不开 github 的方法与推荐基于Vue3与Element plus的后台管理系统
一.打不开 github 的方法 1.打开本机 hosts 文件(C:\Windows\System32\drivers\etc) 2.然后在 hosts 文件里的末尾放入一下两个 IP 地址: # ...
- 2022春每日一题:Day 40
题目:[NOI2010] 超级钢琴 前求出美妙值的前缀和,然后倍增处理一下前缀和的最大值,然后对于一个左端点s,他能取到右端点的只有s+l到s+r,而他的最大贡献就是s+l 到s+r的最大子段和,因此 ...
- Linux系统安装 tftp服务 NFS服务
安装tftp服务 安装 sudo apt-get install tftp-hpa tftpd-hpa 配置文件 # /etc/default/tftpd-hpa TFTP_USERNAME=&quo ...
- css属性样式整合
font-size 字体大小 常用色值:#000 黑色:#fff 白色:#ccc.#333.#2f2f2f.#666.#ddd 灰色: rgb表示法:color:rgb(255,255,255); r ...
- 【Android】Configuration中的locale已过时
Configuration中有很多属性的设置,在编译时提示错误说locale已过时这个是设置语言的 使用最新的方法如下 configuration.setLocale(locale);
- Vue使用Element表单校验错误Cannot read property ‘validate’ of undefined
在做注册用户的页面使用表单校验一直提示Cannot read property 'validate' of undefined错误,其实这个错误的提示根据有多种情况,比较常见的就是 ref 的名字不一 ...
- 系统内置APK并签名并配置AndroidStudio
前言 最近在集成内置APK的时候遇到了些问题,遂整理一份文档以记录. 一,APP内置进系统固件 将APK源码或编译出的apk文件放在package或vendor等目录下,并且编写相应的android, ...
- python关于error: invalid command 'bdist_wheel报错的解决
看了很多解决办法,大部分在扯去下载一个 .whl 源文件然后在pip 安装,经过我亲自测试执行完这句即可解决! pip3 install wheel
- WeakHashMap 和 HashMap 的区别是什么,何时使用?
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 在之前的文章里,我们聊到了 Java 标准库中 HashMap 与 LinkedH ...