UnityVR-机械臂场景3-手爪

2023-11-09 21:40
文章标签 场景 机械 unityvr 手爪

本文主要是介绍UnityVR-机械臂场景3-手爪,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

手爪是机械臂场景中较难的一部分,它涉及到了与抓取物体的碰撞和共同移动,以下的手爪脚本只考虑到了初步功能,在此基础上还可以做改进。

 1. 首先找到手爪的运动部分——两根手指,它们是控制开合的关键。将它们分别改名为fingerRed和fingerBlue,为了在脚本中容易描述。还可以分别用不同颜色来区别它们,也是为了制作过程的方便。

 2. 给两根手指小红和小蓝分别加上碰撞体,BoxCollider就行,并且调整两个Collider的位置和大小,只要在指尖较小的位置就可以(如下图所示,其实还可以更小)。它们是用来检测是否触碰到物体的。另外还需要将它们的IsTrigger都勾掉,我们不希望手爪一碰到物体就弹开。

  3. 在手爪的根节点上加一个Rigidbody(刚体),之后小红小蓝上的碰撞体需要用这个刚体来调用。还要把刚体的重力取消了,我们不希望手爪一开始就掉地上。

  

 4. 测试小红、小蓝从开爪到闭爪需要移动的方向和距离:分别点击小红和小蓝,查看它们的本地坐标。比如下图中,开爪和闭爪是沿着它们的Z轴方向移动,并且移动距离为0.15。

 

 5. 手爪脚本:

 第一段:声明变量

 第二段:初始化变量,这里使用了一个Slider控件来控制手爪的开闭,并且只考虑开和闭两种状态,不考虑中间状态。

 第三段:一个控制开爪和闭爪的函数,传递一个0或1的参数。这里已将手爪模型简化,它得到的命令不是开就是闭。

 第四段:使用碰撞检测,一旦检测到夹到物体,就让被夹物体成为手爪的子节点,跟随手爪一起移动。(物体必须有“Goods”标签才会被抓取)

 第五段:打开手爪且物体离开手爪时,让物体恢复重力,并且脱离和手爪的父子关系,可以从手爪掉落。

 拓展思考

1. 这里手爪只考虑了开、闭两种状态,如何用Slider控件控制手爪从开到闭的中间过渡状态

2. 如何实现手爪在闭合过程中,一旦碰到物体立刻停在物体表面的功能。

这篇关于UnityVR-机械臂场景3-手爪的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/378571

相关文章

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

java中VO PO DTO POJO BO DO对象的应用场景及使用方式

《java中VOPODTOPOJOBODO对象的应用场景及使用方式》文章介绍了Java开发中常用的几种对象类型及其应用场景,包括VO、PO、DTO、POJO、BO和DO等,并通过示例说明了它... 目录Java中VO PO DTO POJO BO DO对象的应用VO (View Object) - 视图对象

Python中异常类型ValueError使用方法与场景

《Python中异常类型ValueError使用方法与场景》:本文主要介绍Python中的ValueError异常类型,它在处理不合适的值时抛出,并提供如何有效使用ValueError的建议,文中... 目录前言什么是 ValueError?什么时候会用到 ValueError?场景 1: 转换数据类型场景

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit