Unity动画系统中.需要了解的一些根运动概念---RootMotion
游戏开发中RootMotion与普通动画(非Root)的应用大概一共有3种主要状态,父级坐标跟着动画走,父级坐标不跟着动画走,原地踏步(普通动画).这三种不同的动画类型,通常在制作战斗或者交互动画时候,是混合着使用的.
1---父级,碰撞器啥的,控制器,不跟随人物动画,"人物出窍动画"---适用于坐下凳子,上床睡觉啥的,有位移.
2---跟随动画走.RootMotion,动画蹦到哪里,做Boss跳跃攻击,打开RootMotion,跳跃攻击之后,可以用程序控制Boss位移.有位移
3---普通动画.非RootMotion,也就是原地踏步,动画的位移被去掉了,也就是普通动画的效果.无位移
其他需要了解的
Body transform:动画发生的位移和旋转,只是单纯的动画效果,不会影响模型自身在世界空间中的实际位置和朝向。
Root transform:动画发生的位移和旋转,会改变模型实际的位置和旋转。
Bake into Pose实际上就是“烘焙成姿势”,姿势将是子物体的实时运动,不会影响父物体的位置和方向。
Root的中心,是算出来的,物体的质量中心在水平平面的投影位置(重心投影).如果想要设置成脚.Based Upon模式,和Feet模式的区别.
注意Generic动画,如果想要开启RootMotion则需要,在导入设置里面,选一个骨骼作为根骨骼.一般是选Hips
TimeLine上的动画.会自动覆盖人物当前Animator上的动画.动画片段需要选择Bake into Pose才能正常的进行位移.
使用时候的一些问题
应该使用哪种RootMotion形式,
2种形式,都可以做到,人物脱离控制器,与同步控制器.
TimeLine+Bake Into Pose
Animator的Apply Root Motion
Animator的Mask,通常给上半身的动画,比如怪猎世界中的采集动画.
不同的RM形式,对应的情况.
这些都是针对,实时游戏内容来讲的.
比如一个人物,上车,或者上马,上摩托,原来的人物碰撞体怎么办.
原来的人物可以隐藏,摄像机,fade到新的控制物上,比如车或者马.
人物上车可以用Root动画或者TimeLine动画,播放完上车后(上车后,创建一个假人物体,可以是SpawnAmesh,继承当前人物的坐标.原来的人物以因为Rootbake自动返回原来的位置.),人物的整个物体隐藏,--打开汽车的操作控制器.
一个人物上座位,或者床上躺着,原来的碰撞体怎么办.----通常可以使用RootMotion进行“人物脱离Collider”
动画,过场当中,人物的碰撞体怎么办?---通常不用管,TimeLine上可以用事件关掉.
按照使用情况分类
特别小的动画,比如人物按一个场景中的大按钮.---无锁定模式.人物播放动画,+IK混合---似乎需要Point辅助.
中小型动画,比如坐下凳子,上床,单杠,等一些需要RootMotion的.使用TimeLine的系统,或直接在Animator中,设置Root.
中型的.---比如上马,上车,这些则需要单独配置.
中大型的---比如场景动画.则需要场景TimeLine---加控制不同的人物.
其中通用的功能和技术
人物转身,或者是,MoveTo,目标地点,目标的朝向.----人物主体的位置.
人物的手部分,脚部分的IK目标.---把手和脚,放到目标位置.---四肢的动作.
人物的,操作控制,关闭,与开启.---人物的控制开关.
人物的IK部分,渐变的过程,和Animation混合的流程.---四肢的细微动作
拿武器时候,特殊的,手部IK,与武器的IK,比如一个武器一直托在地上.