unity实现小球poke不穿膜

news2024/11/24 14:32:30

引言

在oculus quest2官方实现了手部指尖poke按键不穿膜,具体采用代码的方式进行限制,具体看oculus quest包中的HandPokeLimiterVisual.cs,下面则实现其他物体(小球)作为pokeInteractor来poke按键,当按下的时候小球不会透过按键。
首先先来讲述官方手部指尖实现的逻辑方式。

官方指尖poke limit

poke主导者-手指尖

请添加图片描述
具体的手势跟踪采用的是oculus包中Interaction->Scenes->Examples->PokeExample案例中的模块结构。其中我们看到HandPokeInteractor挂载了重要的 Poke Interactor 和Hand Poke Limiter Visual代码。
Poke Interactor 红框所呈现的列表中我们可以看到一个变量 Point Transform,他导入了指尖的坐标,这里导入的是食指的坐标。因此对于想要成为poke的主导者的话就要挂载这个代码,将poke 主导者的坐标导入进去,之后可以看小球的案例会更加清楚一些。
请添加图片描述

如果要不穿模,主导者也要挂载limit代码,对于手部的代码,他主要是:当检测到按下的时候,更改指尖的位置,让他限制在一定范围内,然后还锁住手腕的pose,避免指尖不动,手腕乱翻,但是没有limit的其他手指实测后还是可以动的。
请添加图片描述
touchPoint就是按下的表面,delta就是上一帧的位移,radius是限制移动的半径,touchnormal是poke的法线,也就是只会沿着法线移动半径距离。
radius可以从上面的Poke Interactor的参数中更改。

被poke-按键

在被poke者挂载poke interactable,主要这是按键的hover悬停、select按下等参数。
以及挂载Interactable unity event可以设置按键发生的各种事件。
请添加图片描述

广播

设置后poke者和被poke者后要设置pointableCanvasModule挂载eventSystem和PointableCanvasModule进行广播。
请添加图片描述

小球案例

poke主导者-小球

建立小球,在小球上挂载上面所说的两个代码,并将小球拖拽到Point Transform中。请添加图片描述
Ball Limit见github代码,给个star呗~

被主导者-按键

在按键上放置上面所说的两个代码。
为了让小球垂直按下按键较长的距离依旧被limit,这里的cancel select normal改成1,之前十0.3太短了,也就是当小球在按键表面向下超过1的时候才被认为是unselect,而我们limit代码是当select = ture则会被limit。
请添加图片描述
按键还能按照不同状态设置事件响应。在这个组件中,我们可以在list添加事件,然后将我们要响应函数挂载在这里。
比如下面的例子:
buttomvisual是我的一个组件,组件上有一个interactableColorVisual的代码,代码中有public的函数synHover(),synSelect()。
在这个列表中将组件拖拽下来,然后在右侧选择代码和对应要响应的函数。
请添加图片描述

广播

同样,我们需要设置广播,跟官方的模块一样,大家看上面截图的设置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/555415.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux网络——shell编程之SNAT与DNAT的应用

Linux网络——shell编程之SNAT与DNAT的应用 一、SNAT的介绍1.SNAT概述2.SNAT源地址转换过程 二、SNAT转换三、DNAT的介绍1.DNAT概述2.DNAT转换前提条件 四、DNAT的转换五、防火墙规则的备份和还原六、tcpdump抓包工具的运用 一、SNAT的介绍 SNAT(SNAT)一…

蓝桥杯数论总结:最大公约数和最小公倍数(原理+性质证明+python板子)

目录 最大公约数 手写GCD 最小公倍数 推导LCM函数表达式 GCD基本性质 性质的证明 取模运算基本性质 证明 最大公约数 gcd是最大公约数的意思。Python的math库里有gcd函数。 在Python命令行运行gcd,可发现其可传入0、不会返回负数、可对多个数进行判断的性质…

利用 DynamoDB 和 S3 结合 gzip 压缩,最大化存储玩家数据

前言 一些传统游戏架构中,采用 MySQL 存储玩家存档数据,利用分库分表分散单库单表的存储和性能压力,从而达到支持更多玩家的目的。随着数据量增长,数据表中 varchar 类型已经无法满足游戏中单字段的存储需求,而 blob …

数据结构 -最短路径dijkstra(迪杰斯特拉)算法讲解及代码实现

迪杰斯特拉算法是一种广义的贪心算法,求出局部最优解,再去求全局最优解 图文讲解: 举例图:(起始点为1) 辅助数组: s:记录了目标顶点到其他顶点的最短路径是否求得(求得…

代码调试技巧

目录 1.为什么要进行调试? 2.调试的基本步骤 3.关于Debug版本和Release版本 4.调试技巧 5.调试总结 我还是喜欢真实的世界,因为在那里,我可以通过自己的努力来改变残酷的现实 本专栏适用于有一定C语言基础并且还要继续学习的人 往期…

CryoEM - 冷冻电镜 CryoSPARC 软件的安装与环境配置

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/130809095 CryoSPARC 软件是一种用于冷冻电镜数据处理的创新工具,可以快速、准确地重建生物分子的三维结构。CryoSPARC 软件…

【使用ChatGPT制作PPT】

内容目录 一、利用ChatGPT生成PPT内容1. 打开ChatGPT:2. 输入需求:3. 复制: 二、制作生成PPT1. 打开PPT制作网站:2. 左侧网页版-导入创建-粘贴Markdown内容-导入创建3. 自行更改副标题、演讲者、选择模板、演示及下载 一、利用Cha…

Linux网络——shell编程之iptables防火墙

Linux网络——shell编程之iptables防火墙 一、概述1.iptables2.netfilter 和 iptables的关系 二、iptables中的四表五链1.四表五链的关系2.四表3.五链 三、匹配顺序1.数据包到达防火墙的匹配流程2.规则链之间的匹配顺序3.规则链内的匹配顺序 四、iptables 防火墙的配置方法1.ip…

python tesseract-ocr + jTessBoxEditorFX 训练自定义字库

在使用tesseract-ocr进行字符识别时,我们使用了官方提供的字库,例如英文字库、中文字库,但这些字库并不一定能满足我们所有的需求。所以有些时候,我们就需要训练属于自己的自定义字库。废话少说,直接开干。 第一步&am…

联想首次展示全栈算力方案服务,品牌换新亮相

1、联想算力,第一次真正被所有人感知。 2、基于软硬服一体化的优势,联想打造了丰富多样的四维算力服务,即融合化、场景化、订阅化、绿色化,可以满足不同企业、不同行业的定制化需求。 5月20日,主题为“联想方案服务&am…

2023中兴软件类笔试

1.下列Python代码:将近似输出什么? import numpy as np print np.sqrt(6*np.sum(1/np.arange(1,1000000, dtypenp.float)**2))这段代码是用来计算圆周率的巴塞尔问题(Basel problem)的近似值,输出结果将近似为3.14159…

使用SMTP协议发送邮件

剧情介绍 今天心血来潮,学了一下Python3,里面有个章节是发送邮件,用示例里面的代码,运行后报错,然后记录一下问题是如何解决的,大家可以看一下,可以有效避坑。 SMTP协议介绍 SMTP&#xff08…

Mysql数据库备份 一天一次 保存最新五天 每天凌晨三点备份

Mysql数据库备份 一天一次 保存最新五天 每天凌晨一点三十备份 步骤一 先查看 sudo systemctl status crond 是否存在 不存在执行下面代码 sudo yum install cronie sudo systemctl start crond sudo systemctl enable crond sudo systemctl status crond 步骤二 Cd /home …

从零开始 Spring Boot 33:Null-safety

从零开始 Spring Boot 33:Null-safety 图源:简书 (jianshu.com) Null-safety(null安全)实际上是Java这个“古老”语言的历史包袱,很多新的语言(比如go或kotlin)在诞生起就在语言层面提供对null…

软件测试需要学习什么?好学吗?需要学多久?到底是报班好还是自学好?

目录 前言: 【文章的末尾给大家留下了大量的福利哦。】 一:软件测试好学吗?需要学习多久? 二:那么选择软件测试行业有什么优势呢? 三:再来说说大家最关心的——软件测试人员的薪资怎么样? …

Spring : XML配置 JavaBean

文章目录 前言一、xml 加载 Bean 对象总结XML加载Bean对象 前言 跟着大佬走!!!! https://github.com/DerekYRC/mini-spring 提示:以下是本篇文章正文内容,下面案例可供参考 一、xml 加载 Bean 对象 大家先…

【C语言】数组名作函数参数

数组名作函数参数 引例思考例2通用性指针形参和数组形参几点说明 引例 在主函数中输入10个整数,并存入一个一维数组中;然后在被调函数中,将0号元素的值改为原值的10倍;最后在主函数中输出结果。 思路: 若想在被调函数…

10:00进去,10:05就出来了,这问的也太变态了···

从外包出来,没想到死在另一家厂子了。 自从加入这家公司,每天都在加班,钱倒是给的不少,所以也就忍了。没想到5月一纸通知,所有人不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个兄弟内推…

SSM框架-SpringMVC

1. SpringMVC 1.1 Spring与Web环境集成 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) &…

ActiveMq消息队列

ActiveMq是一种开源的java程序&#xff0c;支持Java消息服务(JMS) 1.1 版本 一、持久化机制 1、KahaDB&#xff1a;5.4及之后版本&#xff0c;默认使用日志文件 activemq.xml默认使用KahaDB持久化存储&#xff0c;默认配置安装路径data目录下 <persistenceAdapter> …