前言

这篇文章是【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】(三)限制可操作物体的移动 / 旋转的更多相关文章

  1. Unity3d 控制物体移动、旋转、缩放

    在Unity中通过利用 Input Manager(输入管理器)可以很简单的实现对一个物体进行移动.旋转.缩放操作. 演示代码: //通过虚拟轴控制物体移动.旋转.缩放 public class Mo ...

  2. Android SDK三种更新失败及其解决方法

    更新Android SDK,居然失败了三次. 1.第一次失败 出现Failed to fetch URL错误提示 Failed to fetch URL https://dl-ssl.google.c ...

  3. (20)C++项目练习三--------【运动物体视频检测跟踪系统】

    1.功能点 (1)视频监控显示 (2)移动物体标定跟踪(轨迹显示) (3)实时视频保存(以时间戳形式) (4)移动物体触发视频保存.报警 (5)视频文件分类.回放.搜索 进行中............ ...

  4. sdk(输入驱动物体 驱动属性 被驱动物体 被驱动属性 驱动数值 一键搞定驱动),当你的目标体很多展开会卡的时候使用这个

    import  maya.cmds  as  mc def   sdksomething( sdk_obj="",                    sdkAttr=" ...

  5. Unity3D 物体跟随鼠标旋转

    float speed=1000f; void Update () { if (Input.GetMouseButton (0)) { transform.Rotate (0,-Input.GetAx ...

  6. unity发布安卓 手指控制物体缩放和旋转

    直接帮到物体的身上就可以了 using UnityEngine; using System.Collections;using System.IO;public class hehe : MonoBe ...

  7. Unity3D 几个基本动画(控制物体移动、旋转、缩放)

    Transform基本移动函数: 1.指定方向移动: //移动速度 float TranslateSpeed = 10f; //Vector3.forward 表示"向前" tra ...

  8. Unity 3D 中实现对物体 位置(position) 旋转(rotation) 大小(scale) 的全面控制

    今天分享一些基础控制的脚本 1.位置(Position): 控制位置很简单,首先要知道要在xyz哪几个轴上移动,确定好后定义代表着那些轴的移动变量,速度(m_speed在函数外定义为全局变量)然后通过 ...

  9. 【three.js第三课】鼠标事件,移动、旋转物体

    1.下载three.js的源码包后,文件夹结构如下: 2.在[three.js第一课]的代码基础上,引入OrbitControls.js文件,此文件主要用于 对鼠标的操作. 该文件位置:在文件结构中 ...

  10. OCulus Rift 游戏开发六原则

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/46685477 作者:car ...

随机推荐

  1. Codeforces Round #791(Div 2)——D

    D Problem - D - Codeforces 题意: 给定一个有向图,每个点有自己的点权,求一条长度为K的路径使得路径上的最大点权最小,输出该条路径上的最大点权. 思路:(二分+拓扑排序) 最 ...

  2. 如何精简 Prometheus 的指标和存储占用

    前言 随着 Prometheus 监控的组件.数量.指标越来越多,Prometheus 对计算性能的要求会越来越高,存储占用也会越来越多. 在这种情况下,要优化 Prometheus 性能, 优化存储 ...

  3. 决策树(二):后剪枝,连续值处理,数据加载器:DataLoader和模型评估

    在上一篇文章中,我们实现了树的构造,在下面的内容中,我们将中心放在以下几个方面 1.剪枝 2.连续值处理 3.数据加载器:DataLoader 4.模型评估 一,后剪枝 • 为什么剪枝  –" ...

  4. 【DL论文精读笔记】 深度压缩

    深度压缩 DEEP COMPRESSION: COMPRESSING DEEP NEURAL NETWORKS WITH PRUNING, TRAINED QUANTIZATION AND HUFFM ...

  5. Training: Get Sourced

    原题链接:http://www.wechall.net/challenge/training/get_sourced/index.php 提示告诉我们答案就藏在这个界面中,使用View Sourcec ...

  6. LayuI 动态下拉框和动态设置选中

    动态下拉框 //下拉框异步加载 function asyncSelect(thisId, grade, selectNodeName) { $("#" + selectNodeNa ...

  7. CKA考试经验:报考和考纲

    1 报考相关 1.有效期一年.在一年内需要定好考试的时间. 2.提前15分钟进入考试系统, 提前进入考试系统后并不是立马开始考试,而是预留给考官时间考察你的考试环境 3.考试时间 ,注意报考的Time ...

  8. Vue中关于数组与对象修改触发页面更新的机制与原理简析

    Vue中关于数组与对象修改触发页面更新的机制与原理简析 相关问题 数组 使用索引直接赋值与直接修改数组length时,不会触发页面更新. 例如: <script> export defau ...

  9. VmWare安装Centos后配置Net网络SSH链接问题看这一遍就够了

    1:首先安装VmWare 2:启动时在安装对应的Linux版本,网络就默认 net即可 3:都安装好了之后,注意有一个大坑,输入的账号密码都不能准确登录 最后发现是linux默认的输入法没有启用电脑键 ...

  10. linux挖矿处置

    挖矿的类型 主动挖矿:用户在个人电脑或服务器使用挖矿程序进行CPU,GPU计算,获取虚拟货币. 被动挖矿:挖矿病毒通过系统漏洞,恶意程序,弱口令等方式入侵服务器,设备感染挖矿病毒后会开始挖掘虚拟货币. ...