在Unity中,如何防止动画搞乱运动?

时间:2016-04-22 00:50:14

标签: unity3d navmesh unity3d-mecanim

问题:

我有一个带有Nav Mesh Agent组件的角色模型。它完全移动到我告诉它移动的任何目的地(使用NavMeshAgent.destination属性)。

但是一旦我使用从商店下载的动画控制器,这突然失败了。这个角色不会跑到它的目的地;相反,它将无休止地绕圈圈跑。

我不确定为什么会这样,但我认为正在运行的动画不知何故会削弱角色的转身能力。 Inspector在相关.fbx文件的导入设置中显示:Average Angular Y Speed: 0.0 deg/s

即使我明确地将NavMeshAgent.updatePositionNavMeshAgent.updateRotation属性设置为true,我真的真的无法理解为什么会一直发生这种情况。我理解documentation的方式,这应该让角色在Nav Mesh Agent想要移动时移动,而不是其他任何东西(包括动画)想要移动?

我该如何解决这个问题?我应该如何强制动画不干涉运动?

2 个答案:

答案 0 :(得分:2)

完成所有动画 并使用代码进行移动,您可以取消选中 root motion 并使用状态机值来获取一个更好的运动或使用根运动,并让mecanim的retarget引擎进行混合,所以去看看你能得到更好的结果,所以我猜你的问题是你的动画没有到位。

答案 1 :(得分:0)

首先:Unity的最大优点之一就是它的mecanim。禁用根运动是一个很大的优势。

第二:你的角色四处奔波的原因可能是因为动画师和navmesh代理正在发出冲突的命令。将updatePosition用于false,将updateRotation用于true。因此,动画师控制你移动的速度,navmesh代理控制角速度。其他可能的原因是您的目的地无法到达。检查向量的Y分量并确保它们是共面的。