我们游戏内的动作都是Generic类型的,并且技能动作使用了{% post_link Unity-Root-Motion Root Motion %}来处理技能位移。
所有模型都有一跟B_Root骨骼(没有蒙皮信息),用作模型导入设置里的Root node。
如果将动作类型改为Humanoid,则由于B_Root的存在,会导致Root Motion无法正常使用,不管Bake Inot Pos与否,动作本身都会有位移,看表现应该是B_Root影响到了Body Transform和Body Orientation的计算:
可以看到模型跟Body Transform已经分离开来。
去掉B_Root骨骼后Root Motion表现正常。但Untiy自动生成的映射并不是很正确,还需仔细调整Avatar才可以,主要是臀、脊柱、胸、颈错了,以下是手动调整之后的效果:
最终可以看到Root Motion表现正常了,Body Transform不会再跟模型分开来: