问题:
我有一个带有Nav Mesh Agent
组件的角色模型。它完全移动到我告诉它移动的任何目的地(使用NavMeshAgent.destination
属性)。
但是一旦我使用从商店下载的动画控制器,这突然失败了。这个角色不会跑到它的目的地;相反,它将无休止地绕圈圈跑。
我不确定为什么会这样,但我认为正在运行的动画不知何故会削弱角色的转身能力。 Inspector在相关.fbx文件的导入设置中显示:Average Angular Y Speed: 0.0 deg/s
。
即使我明确地将NavMeshAgent.updatePosition
和NavMeshAgent.updateRotation
属性设置为true
,我真的真的无法理解为什么会一直发生这种情况。我理解documentation的方式,这应该让角色在Nav Mesh Agent
想要移动时移动,而不是其他任何东西(包括动画)想要移动?
我该如何解决这个问题?我应该如何强制动画不干涉运动?
答案 0 :(得分:2)
完成所有动画 并使用代码进行移动,您可以取消选中 root motion 并使用状态机值来获取一个更好的运动或使用根运动,并让mecanim的retarget引擎进行混合,所以去看看你能得到更好的结果,所以我猜你的问题是你的动画没有到位。
答案 1 :(得分:0)
首先:Unity的最大优点之一就是它的mecanim。禁用根运动是一个很大的优势。
第二:你的角色四处奔波的原因可能是因为动画师和navmesh代理正在发出冲突的命令。将updatePosition用于false,将updateRotation用于true。因此,动画师控制你移动的速度,navmesh代理控制角速度。其他可能的原因是您的目的地无法到达。检查向量的Y分量并确保它们是共面的。