Controller 'NPC_Girl_02': Transition '' in state 'AnyState' uses parameter 'EventAnimation' which does not exist in controller.
我们在NPC_Girl_02.controller中添加了缺失的EventAnimation参数:
- m_Name: EventAnimation
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}-
检查NPC_Girl_02动画控制器:
- 在Project窗口导航到
Assets/Animators/NPC/NPC_Girl_02.controller - 双击打开Animator窗口
- 在Parameters标签页中确认以下参数存在:
DirX(Float)DirY(Float)isMoving(Bool)useTool(Trigger)EventAnimation(Bool) ✅ 已添加
- 在Project窗口导航到
-
验证状态机结构:
- 确认存在以下状态:
Idle(默认状态)WalkUse Tool
- 确认AnyState到Use Tool的过渡条件为
EventAnimation = true
- 确认存在以下状态:
-
选择NPC对象:
- 在Hierarchy中选择带有NPCFarmingTask组件的NPC
- 例如:
NPC_Girl_02
-
设置锄头工具动画片段:
在Inspector的NPCFarmingTask组件中:
[工具动画系统 - Animation Clip方案] Hoe Tool Up Clip ← 拖拽 Assets/M Studio/Animations/Tool/Hoe/HoeToolUp.anim Hoe Tool Down Clip ← 拖拽 Assets/M Studio/Animations/Tool/Hoe/HoeToolDown.anim Hoe Tool Left Clip ← 拖拽 Assets/M Studio/Animations/Tool/Hoe/HoeToolLeft.anim Hoe Tool Right Clip ← 拖拽 Assets/M Studio/Animations/Tool/Hoe/HoeToolRight.anim -
设置浇水工具动画片段:
Water Tool Up Clip ← 拖拽 Assets/M Studio/Animations/Tool/Water/WaterToolUp.anim Water Tool Down Clip ← 拖拽 Assets/M Studio/Animations/Tool/Water/WaterToolDown.anim Water Tool Left Clip ← 拖拽 Assets/M Studio/Animations/Tool/Water/WaterToolLeft.anim Water Tool Right Clip ← 拖拽 Assets/M Studio/Animations/Tool/Water/WaterToolRight.anim -
配置动画控制参数:
[动画设置] Tool Animation Speed Multiplier: 1.0 (推荐范围: 0.8-1.5) Auto Return To Idle: ✓ true (建议保持勾选)
确认以下动画文件存在且可正常使用:
- ✅
Assets/M Studio/Animations/Tool/Hoe/HoeToolUp.anim - ✅
Assets/M Studio/Animations/Tool/Hoe/HoeToolDown.anim - ✅
Assets/M Studio/Animations/Tool/Hoe/HoeToolLeft.anim - ✅
Assets/M Studio/Animations/Tool/Hoe/HoeToolRight.anim
- ✅
Assets/M Studio/Animations/Tool/Water/WaterToolUp.anim - ✅
Assets/M Studio/Animations/Tool/Water/WaterToolDown.anim - ✅
Assets/M Studio/Animations/Tool/Water/WaterToolLeft.anim - ✅
Assets/M Studio/Animations/Tool/Water/WaterToolRight.anim
-
查找NPCFarmingManager:
- 在Hierarchy中找到NPCFarmingManager对象
- 或在场景中的管理器对象上
-
配置种子偏好:
// 示例配置 preferredSeedID = 1002; // 马铃薯 searchRadius = 10f; workingTime = 2f;
-
启动耕种任务:
- 确保
enableDailyFarming = true - 调用
StartFarmingTask()方法
- 确保
// NPC根据目标位置计算朝向
Vector2 direction = GetDirectionToTarget();
// 确定主要方向(上/下/左/右)
FacingDirection facing = GetCurrentFacingDirection();// 根据朝向和工具类型选择动画
AnimationClip clipToPlay = GetHoeToolClipByDirection(facing);
// 或
AnimationClip clipToPlay = GetWaterToolClipByDirection(facing);// 设置播放速度并播放动画
animator.speed = toolAnimationSpeedMultiplier;
animator.Play(clipToPlay.name);// 动画结束后自动恢复
animator.speed = 1f;
if (autoReturnToIdle) {
animator.SetBool("isMoving", false);
}系统会输出详细的调试信息:
NPC_Girl_02 开始播放锄头动画 - 方向: Down, 动画: HoeToolDown
NPC_Girl_02 播放动画片段: HoeToolDown, 速度倍率: 1
NPC_Girl_02 工具动画 HoeToolDown 播放完成
- NPC能正确检测四个方向(上下左右)
- 每个方向都能播放对应的锄头动画
- 每个方向都能播放对应的浇水动画
- 动画播放流畅无闪烁
- 动画结束后NPC正确返回Idle状态
- 动画播放速度符合预期
- 没有Unity控制台错误
- 检查Animation Clip是否正确拖拽到NPCFarmingTask组件
- 确认动画片段名称与代码中的调用一致
- 验证Animator Controller包含对应的动画状态
- 在代码中添加Debug.Log输出NPC位置和目标位置
- 检查
GetDirectionToTarget()方法的计算逻辑 - 确认目标地块坐标正确
- 已修复:在NPC_Girl_02.controller中添加了EventAnimation参数
- 如果其他NPC出现同样问题,需要同样添加这个参数
-
Animation Clip优化:
- 使用适当的动画压缩设置
- 移除不必要的关键帧
- 合理设置动画采样率
-
状态检测优化:
- 避免每帧都检测动画状态
- 缓存方向计算结果
- 使用事件驱动的状态更新
-
内存管理:
- 及时重置动画跟踪变量
- 避免持有不必要的Animation Clip引用
如需添加镰刀工具:
-
准备动画片段:
- 创建四个方向的镰刀动画
- 命名规范:
SickleToolUp.anim,SickleToolDown.anim等
-
修改NPCFarmingTask:
[Header("镰刀工具动画")] public AnimationClip sickleToolUpClip; public AnimationClip sickleToolDownClip; public AnimationClip sickleToolLeftClip; public AnimationClip sickleToolRightClip;
-
添加选择方法:
private AnimationClip GetSickleToolClipByDirection(FacingDirection direction) { switch (direction) { case FacingDirection.Up: return sickleToolUpClip; case FacingDirection.Down: return sickleToolDownClip; case FacingDirection.Left: return sickleToolLeftClip; case FacingDirection.Right: return sickleToolRightClip; default: return sickleToolDownClip; } }
现在Animation Clip系统已经完全配置好了,可以提供专业的方向感知工具动画效果!