Unity中启用Animator后NavMeshAgent无法正常工作问题求助
问题解决步骤
核心原因:Animator根运动与NavMeshAgent冲突
这是新手使用NavMesh+Animator时最常见的问题——动画系统的根运动接管了NPC的位移,导致NavMeshAgent无法控制移动。
关闭Animator的根运动
- 选中你的NPC对象,找到Inspector里的
Animator组件,取消勾选Apply Root Motion选项。 - 打开行走动画剪辑,在Inspector的Root Motion区域选择Bake Into Pose,确保动画的位移不会影响NPC的实际位置。
- 选中你的NPC对象,找到Inspector里的
修正Animator过渡设置
- 打开你的Animator Controller,确认IsWalking布尔参数已添加到参数列表中。
- 检查所有过渡条件:
- 待机→行走的过渡:条件设为
IsWalking == true - 行走→待机的过渡:条件设为
IsWalking == false - 关闭所有过渡的Has Exit Time选项,避免动画播放完才切换状态,导致响应延迟。
- 待机→行走的过渡:条件设为
脚本与组件赋值检查
- 在Inspector面板中,确认脚本的
Animator字段已经拖拽了NPC的Animator组件,不存在空引用。 - 可以在
Update方法中添加调试代码,验证参数是否正确设置:
运行游戏后查看控制台输出,确认速度值和参数状态是否符合预期。Debug.Log("当前速度: " + navMeshAgent.velocity.magnitude + " | IsWalking状态: " + Animator.GetBool(IsWalking));
- 在Inspector面板中,确认脚本的
解决NPC浮起问题
- 选中NPC的
NavMeshAgent组件,调整Base Offset参数,让NPC的位置贴合地面。
- 选中NPC的
内容的提问来源于stack exchange,提问作者hduece
相关产品推荐
相关产品推荐

