UnityVR-机械臂场景3-手爪

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

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

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

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

  

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

 

 5. 手爪脚本:

 第一段:声明变量

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

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

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

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

 拓展思考

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

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

猜你喜欢

转载自blog.csdn.net/tangjieitc/article/details/125727919