Unity 2D Animation——2.IK反向动力学

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 2D Animation——2.IK反向动力学相关的知识,希望对你有一定的参考价值。

参考技术A 上一回我们介绍了 Unity2D Animation的骨骼绑定 ,这一回我们讲讲IK。

IK是Inverse Kinematic的缩写,也就是反向动力学。是根据骨骼的终节点来推算其他父节点的位置的一种方法。比如通过手的位置推算手腕、胳膊肘的骨骼的位置。逆向动力学的过程在一些场景下十分有用,例如一个机械臂,你需要它去抓取一个放置在特定的空间位置的物体,那么就需要利用逆向动力学去计算出机械臂各个关节的旋转角度,进而驱动机械臂去抓取物体。与之对应的FK是正向动力学,是Forward Kinematic的缩写。正向动力学是根据父节点的运动来影响到子节点的位置的一种方法。

IK系统能够极大程度的提高角色行走,跳跃,跑步等动画的制作效果和效率,是骨骼动画系统不可缺少的一个功能。大多数的2D骨骼动画软件中都有IK系统,比如Spine,DragonBones等。Unity 2D Animation中也引入了IK系统。

Unity2020版本及以上的版本中的2D Animation中内置了IK系统,所以不需要专门安装。Unity2019版如果想使用2D IK系统则需要安装插件。

打开Unity2019的版本,选择Package Manager包管理器,搜索IK,如果没有搜索到结果的话,需要将Package Manager设置为Preview预览模式。此时Unity会提示你是否确定使用预览包,点击确定。

设置好了之后可以搜到IK插件,点击Install安装。

在场景中创建一个空物体(Create Empty),将其命名为你的角色名称(Player),选中 上一节 中我们创建好的角色,将其拖入到这个空物体中。IK系统,以及后面要用到的Animation动画系统,都需要在这个空物体“壳子”上挂载组件,既方便管理有能够保证后面加入的别的组件不会影响到动画或者IK系统。

在Player上添加组件——IK Manager 2D(2D反向动力管理器)。

添加完成后可以看到一个IK Solvers的列表,初始状态是空的(List is Empty),这个就是每一个IK关节的控制单元。

点击左下角的加号,创建一个IK控制单元,选择Limb(肢体)选项,该选项对应了一般动物和人类的四肢,默认是控制两个骨节。而Chain(链条)则是控制多个骨节的单元,CCD是双向可动链条,FABRIK是单向可动链条。我们创建的是人物骨骼,所以选择Limb。

选择之后会创建一个新的节点New LimbSolver2D,我们先从左腿开始做IK,所以可以将此节点命名为LeftLegSolver。

然后选中左腿对应的骨骼,在这个骨骼上创建一个空物体作为IK控制的点。将这个点移动到肢端。

选中上一步创建的LeftLegSolver,将刚刚创建的空物体拖入到Limb Solver 2D组件的Effector(作用点)中。

点击Create Target生成目标点。

生成好目标点后可以看到如下结果,左腿两节骨骼均有绿色的点,肢端上有圆圈,圈中也有绿色点。此时表明IK目标点就生成好了。点击目标点进行拖动,可以实现腿部的IK运动效果。

拖拽脚尖处的圆圈(Target)就可以实现如图显示的IK效果。

重复上述操作,添加其余三个肢体的IK Solver。需要注意的一点,当创建出来的关节反向了,需要点击下图右侧的Flip单选框,反转当前的关节。

四肢都添加了IK之后们就是如图显示的效果。

在进行演示的时候一定要选中根节点骨骼进行移动,否则会将关节拉脱位。这样就能看到如下图所显示的IK动作了。

以上是关于Unity 2D Animation——2.IK反向动力学的主要内容,如果未能解决你的问题,请参考以下文章

Unity 骨骼动画 2D Animation 入门(1)

Unity 2D Animation——4.行走动画录制

unity3d里面Animation和Animator的区别

怎么用unity5.3.4做一个2d游戏

2.Unity2D 横版 帧动画sprite animation+动画状态机animator+丝滑连击动作

2D Procedural Animation小试:尾巴,翅膀,触手等等