Joint

2019-02-12  本文已影响0人  appppppen

Unity中可以使用物理关节组件使物体连接起来

1、Hinge Joint-铰链关节

铰链关节由两个游戏对象的刚体组成,该关节会对刚体进行约束,使它们就好像被连接在一个铰链上那样运动。它非常适用于对门的模拟,也适用在模型链以及钟摆等物体上。

其中有两个锚点,Anchor设置了图1.3中位于上方的那个锚点的位置,Connected Anchor则设置了位于下方的那个锚点的位置;而Axis则决定了两个锚点的指向方向,也就是定义了刚体摆动的方向。

铰链关节的一些理解

单独的铰链关节需要应用到一个游戏对象上,可以不用给关节的Connected Body添加对象(此时相当于和世界相连),当希望关节的Transform属性依赖于连接对象的Transform属性时可以为关节的Connected Body属性添加对象。多个铰链关节也可以串联起来形成一条链条,可以给链条的每一个环添加关节,并向Connected Body那样依次添加下一环上。

2、Fixed Joint-固定关节

固定关节组件用于约束一个游戏对象对另一个游戏对象的运动。类似于对象的父子关系,但是它是通过物理系统来实现而不是像父子关系那样是通过Transform属性来进行约束。固定关节适用于以下的情形:当希望将对象较容易与另一个对象分开时,或者连接两个没有父子关系的物体使其一起运动时,使用固定关节的对象自身需要有刚体组件。

它的属性在铰链关节中都有讲到(意义都是一样的),这里不再重复。
当需要某些物体暂时或永久性的粘在一起时,就非常适用固定关节组件。该组件不需要通过脚本来更改层级结构就可以实现想要的效果,只需要为那些要使用固定关节的物体添加刚体组件即可。
可以通过Break Force和Break Torque属性来设置关节的强度极限,如果这些参数不是无穷大而是一个数值的话,当施加到对象身上的力或转矩大于此极限值时,固定关节将被销毁,其对象的约束也就随即失效。

3、Spring Joint-弹簧关节

弹簧关节组件可以将两个刚体连接在一起,使其像连接着弹簧那样运动,和铰链关节组件中重复的属性就不再重复。

弹簧关节允许一个带刚体的对象被拉向一个指定的目标位置,这个目标可以是另一个刚体对象或者世界。当游戏对象离目标位置越来越远时,弹簧关节会对其施加一个作用力使其回到初起时的位置,和现实中的弹簧一个道理。
当弹簧关节被创建后,其目标位置是由从锚点到连接的刚体对象的相对位置所决定的,这使得在编辑器中将弹簧关节设置给角色或其他游戏对象非常容易,但是如果通过脚本来生成一个实时的推拉弹簧的操作就相对比较麻烦。如果想通过弹簧关节来控制游戏对象的位置,通常是建立一个有刚体组件的空物体,然后将该空物体设置到Connected Rigidbody属性上,这样就可以通过脚本来控制空对象的移动,进而弹簧也会随着空对象的移动而移动。

4、Character Joint-角色关节

角色关节主要用于表现布娃娃效果,它是扩展的球关节,可以用于限制关节在不同旋转轴下的旋转角度。

介绍一下上面没有讲到的属性。

角色关节组件提供了很多可能性用于约束通用关节的运动。
扭矩(以橙色的gizmo表示)为关节的运动提供了限制,扭矩允许用户以角度的形式设置关节旋转的下限和上限(角度是相对初始位置来衡量的)。如-20度的扭矩下限和70度的扭矩上限限制了绕扭动轴(橙色gizmo)的旋转角度在-20度到70度之间。
Swing 1 Limit限制了绕摆动轴的旋转(绿色gizmo)。对摆动轴旋转角度的限制是对称的,如设置Swing 1 Limit的限制角度为30度,则表示Swing 1 Limit的旋转角度被限制在-30度和30度之间。
Swing 2 Limit没有gizmo辅以表示,此轴垂直于扭动轴和Swing 1 Limit。与Swing 1 Limit相同,对它的限制也是对称的。

5、Configurable Joint-可配置关节

可配置关节组件支持用户自定义关节,它开放了PhyX引擎中所有与关节相关的属性,因此可以像其他类型的关节那样来创造各种行为。可配置关节中有两类主要的功能:移动/旋转限制和移动/旋转加速度。

上一篇下一篇

猜你喜欢

热点阅读