内容是看B站看到的一个极客学院的教学视频,想写下来帮助自己记忆和方便查阅,如果想了解更多请进入B站搜索:【极客学院】Unity3D工程师 初级+中级+高级+资深工程师
物体一般的动画都是使用正向动力学从根部开始传导到节点之中,如果想要人物与场景内的物体互动,比如实现诸如刺客信条里面那样跳来跳去、爬来爬去的效果,那就需要使用反向动力学来实现。
在脚本中使用IK
主要是将人物的关节,比如手、脚、头部、手肘、膝盖等和场景中物体绑定,那么人物的关节就会随着场景中物体的移动而移动。
主要使用Animator类下的函数来进行设置
注意要在MonoBehaviour脚本里的OnAnimatorIK函数里面使用。
先使用Weight设置权重,然后使用Position和Rotation将关节的位置和旋转分别和目标绑定。
使用hit的函数主要是设置手肘和膝盖的关节,不过设置过程类似。
注意如果同时设置比如头部的IK和手部的IK的时候,可能出现不匹配,这时就要创建一个新的Layers复制前面的层,代码使用如下的代码
也就是在指定层的时候启用手部的IK,这样头部的和手部的IK就可以配合一起使用了。
如果不这样,头部瞄准的时候手部虽然有IK但是不会随着物体的转动而移动。这里物体是挂在头部的子物体,这样就会随着头部的转动而转动,而头部瞄准泰迪的头部。同时物体上有两个空物体分别是左手和右手放置的位置,左手和右手的IK就绑定在上面。
设置头部的Weight 的时候注意有一个参数可以设置是否可以360度旋转或者是180度旋转,这样看起来更加自然。具体的当然要查看具体的API来获取更多信息。