Unity Meta Quest 一体机开发(八):实现 Hand Grab 扔物体功能

文章目录

  • 📕教程说明
  • 📕设置刚体和碰撞体
  • 📕给物体添加 Physics Grabbable 脚本
  • 📕给手部添加 Hand Velocity Calculator 物体

此教程相关的详细教案,文档,思维导图和工程文件会放入 Seed XR 社区。这是一个高质量知识星球 XR 社区,博主目前在内担任 XR 开发的讲师。此外,该社区提供教程答疑、及时交流、进阶教程、外包、行业动态等服务。

知识星球链接:Seed XR 高级社区

在这里插入图片描述


📕教程说明

这篇教程将会介绍如何在能够抓取物体的基础上实现扔物体的物理效果。

配置一个基本的玩家物体可以参考前几期教程:https://blog.csdn.net/qq_46044366/article/details/134097455

实现抓取物体的效果可以参考上一篇教程:https://blog.csdn.net/qq_46044366/article/details/134488224
这篇教程将基于上一篇教程的配置来讲解,因为实现扔物体的前提是实现物体的抓取

系列教程专栏:https://blog.csdn.net/qq_46044366/category_12118293.html

配套的视频链接:
https://www.bilibili.com/video/BV12j411L7YQ

​电脑操作系统:Windows 11

使用的 VR 设备:Meta Quest 3(Quest 系列都适用)

使用的 Unity 版本:2021.3.5 LTS (这里推荐使用 2021 及以上的 LTS 版本)

Meta XR SDK 版本:v57

官方文档:https://developer.oculus.com/documentation/unity/unity-gs-overview/

实现扔物体的效果:
https://developer.oculus.com/documentation/unity/unity-isdk-throw-object/

Interaction SDK 物理组件:https://developer.oculus.com/documentation/unity/unity-isdk-using-with-physics/

最终效果:

在这里插入图片描述


📕设置刚体和碰撞体

要想实现扔物体的物理效果,可抓取物体就需要拥有重力效果,并且能和其他物体发生碰撞。我们需要取消勾选碰撞体组件上的 Is Trigger,并且勾选刚体组件上的 Use Gravity

在这里插入图片描述

📕给物体添加 Physics Grabbable 脚本

在可抓取物体的身上添加 Physics Grabbable 脚本

在这里插入图片描述

这个脚本会自动引用物体身上的 Rigidbody 和 Grabbable 脚本。如果 Rigidbody 和 Grabbable 在添加 Physics Grabbable 脚本之后被添加,需要手动引用。

然后找到物体的 HandGrabInteractable 子物体,找到 HandGrabInteractable 脚本,将物体身上的 Physics Grabbable 脚本拖到 Optionals 下的 Physics Grabbable 变量上

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Physics Grabbable 脚本能够保证物体在被抓取和释放的时候不会出现奇怪的物理效果。物体被抓取时,Physics Grabbable 会将刚体的 Is Kinematic 设为 true。

Unity 的物理系统有这么几个特性:

  • 两个物体产生碰撞的条件是:两个物体都有碰撞体,至少有个物体有刚体。
  • 物体加了刚体会受到力的效果。

is Kinematic 设为 true 的物体不会对其他刚体的碰撞和力做出反应,但依然会对其他刚体产生物理影响,比如可以撞击其他刚体,或者其他刚体撞击自己,其他刚体会被弹开。也就是我撞别人,能撞动别人;别人撞我,我没反应,别人可能会被弹开。

然后抓取的物体被释放后,Is Kinematic 会恢复成 false。然后会给物体施加一个力,让物体掉落时的物理效果看起来正常一点。如果没有添加 Physics Grabbable 脚本,在释放物体后物体会非常快速地落下。但是添加了Physics Grabbable 脚本后,物体就会以正常的重力效果掉落。

📕给手部添加 Hand Velocity Calculator 物体

在 Project 窗口的搜索栏搜索 Hand Velocity Calculator,将 Hand Velocity Calculator 这个 Prefab 拖到玩家物体的 LeftHand 下:

在这里插入图片描述
在这里插入图片描述

点击 Hand Velocity Calculator 物体,找到它的 Hand Pose Input Device 脚本,将 LeftHand 拖到 Hand 变量上

在这里插入图片描述

然后找到左手的 HandInteractorsLeft 下的 HandGrabInteractor,将左手的 Hand Velocity Calculator 物体拖到 HandGrabInteractor 脚本的 Veclocity Calculator 变量上

在这里插入图片描述
在这里插入图片描述

右手也是同样的道理。

在这里插入图片描述

当我们配置好了物体和手部后,就能实现 Hand Grab 扔物体的效果。

而 Hand Velocity Calculator 上的 StandardVelocityCalculator 脚本就能模拟物体扔出去后的速度。

在这里插入图片描述

最终效果:

在这里插入图片描述

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

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

相关文章

Open Feign 源码解析(一) --- FactoryBean的妙用

什么是Open Feign? OpenFeign 是 Spring Cloud 全家桶的组件之一, 其核心的作用是为 Rest API 提供高效简洁的 RPC 调用方式 搭建测试项目 服务接口和实体 项目名称 cloud-feign-api 实体类 public class Order implements Serializable {private Long id;p…

Vue3的项目创建到启动

Vue3的项目创建 检查node版本创建 npm init vuelatest 安装依赖 项目启动 启动成功

java学习part15单例模式

107-面向对象(高级)-单例设计模式与main()的理解_哔哩哔哩_bilibili 1.单例 就是说在某些开发场景中,某个类只要有一个对象就足够使用了,不需要重复创建。 (理解:比如说是数据库对象,使用时创建一个可以处理所有的数…

苍穹外卖项目笔记(5)——Redis

1 入门 1.1 Redis 简介 Redis 是一个基于内存的 key-value 结构数据库,官网链接(中文):https://www.redis.net.cn 特点: 基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻&am…

C语言进阶-程序环境和预处理

目录 ​编辑 翻译环境 编译过程 预定义符号 #define #define 定义标识符 #define 定义宏 注意 例1 例2 提醒 #和## ##的作用 ​编辑 #的作用 ​编辑 带副作用的宏参数 预处理结果 输出结果 宏和函数对比 宏的缺点 命名约定 #undef 文件包含 本地文件包含 库文件包含…

C#,《小白学程序》第九课:堆栈(Stack),先进后出的数据型式

1 文本格式 /// <summary> /// 《小白学程序》第九课&#xff1a;堆栈&#xff08;Stack&#xff09; /// 堆栈与队列是相似的数据形态&#xff1b;特点是&#xff1a;先进后出&#xff1b; /// 比如&#xff1a;狭窄的电梯&#xff0c;先进去的人只能最后出来&#xff1…

oracle第一部分答疑

基础知识&#xff1a;第一章 视频总结&#xff1a; 1.体系结构&#xff1a; 1.1 oracle server 包括 instance/database instance包括&#xff1a; 2.内存结构&#xff1a; sga pga 3.进程结构&#xff1a; databse包括&#xff1a; 1.参数文件&#xff1a; pfile spfile 2…

西南科技大学(数据结构A)期末自测练习一

一、填空题(每空0.5分,共5分) 1、数据结构是指( A )。 A、数据元素的组织形式 B、数据类型 C、数据存储结构 D、数据定义 2、数据结构被形式地定义为(D,R),其中D是( B )的有限集合,R是D上( D )的有限集合。 (1)A.算法B.数据元素C.数据操作D.逻辑结构 (2)A.操作B.…

C++二分查找或并集查找:交换得到字典序最小的数组

作者推荐 利用广度优先或模拟解决米诺骨牌 本文涉及的基础知识点 二分查找算法合集 题目 给你一个下标从 0 开始的 正整数 数组 nums 和一个 正整数 limit 。 在一次操作中&#xff0c;你可以选择任意两个下标 i 和 j&#xff0c;如果 满足 |nums[i] - nums[j]| < limi…

Sass基础知识详细讲解【附带表图】

文章目录 前言使用 SassRack / Rails / Merb插件缓存选项语法选择编码 Sass CSS扩展Sass 注释输出 Sass 脚本Sass -规则和指令Sass 控制指令和表达式 Sass 混入指令Sass 功能指令命名约定Sass 输出样式:nested:expanded:compact:compressedSass 扩展缓存存储自定义导入 后言 前…

Python爬虫之代理IP与访问控制

目录 前言 一、代理IP 1.1.使用代理IP的步骤 1.2.寻找可用的代理IP 1.3.设置代理IP 1.4.验证代理IP的可用性 二、访问控制 2.1.遵守Robots协议 2.2.设置访问时间间隔 2.3.多线程爬取 总结 前言 在进行Python爬虫过程中&#xff0c;代理IP与访问控制是我们经常需要处…

贪吃蛇小游戏基本简单布局

代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>Layui贪吃蛇小游戏</title> <link rel"stylesheet" href"https://cdn.bootcdn.net/ajax/libs/layui/2.5.7/css/layui.…

如何与死锁斗争!!!

其他系列文章导航 Java基础合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、死锁场景现场 二、死锁是如何产生的 三、死锁排查思路 四、sql模拟死锁复现 五、死锁的解决方案 前言 为避免影响业务&#xff0c;应尽可能避…

Django回顾【一】

一、Web应用程序 Web应用程序是一种可以通过Web访问的应用程序&#xff0c;程序的最大好处是用户很容易访问应用程序&#xff0c;用户只需要有浏览器即可&#xff0c;不需要再安装其他软件。应用程序有两种模式C/S、B/S。 C/S&#xff1a;客户端<----->服务端 例如My…

分类预测 | Matlab实现NGO-KELM北方苍鹰算法优化核极限学习机分类预测

分类预测 | Matlab实现NGO-KELM北方苍鹰算法优化核极限学习机分类预测 目录 分类预测 | Matlab实现NGO-KELM北方苍鹰算法优化核极限学习机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现NGO-KELM北方苍鹰算法优化核极限学习机分类预测&#xff08;完…

App的测试,和传统软件测试有哪些区别?应该增加哪些方面的测试用例?

从上图可知&#xff0c;测试人员所测项目占比中&#xff0c;App测试占比是最高的。 这就意味着学习期间&#xff0c;我们要花最多的精力去学App的各类测试。也意味着我们找工作前&#xff0c;就得知道&#xff0c;App的测试点是什么&#xff0c;App功能我们得会测试&#xff0…

Unreal Engine 学习笔记 (4)—— 多方向动画

1.创建混合空间 1.设置水平方向命名为Direction表示行进方向 -45,300表示向左前方45度方向行走-90,300表示向正左方90度方向行走-135,300表示向左后方45度方向行走-180,300表示向正后方行走右侧方向动画与上述左侧使用同样方法设置Run动画与Walk动画使用同样方法设置 2. 设置…

Java游戏 王者荣耀

GameFrame类 所需图片&#xff1a; package 王者荣耀;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.ArrayList…

某思路等考通一级MSOffice的分析

看到有朋友寻求2021版的等级考试一级软件&#xff0c;秉承授人以鱼不如授人以渔的理念&#xff0c;特写这个帖子。 某思路等考通一级MSOffice&#xff0c;版本6.5。 用到的软件&#xff0c;ScanId&#xff0c;de4dot,dnSpy。 第一步&#xff1a;分析 软件启动后有在线激活提示&…

【索引优化与查询优化】

文章目录 1. 索引失效的案例1.1 最左优先1.2 主键插入顺序1.3 计算、函数、类型转换(自动或手动)导致索引失效1.4 范围条件右边的列索引失效1.5 非 条件索引失效1.6 like以通配符%开头索引失效1.7 OR 前后存在非索引的列&#xff0c;索引失效 2. 关联查询优化 1. 索引失效的案例…