You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中使用SetTrigger触发攻击动画无响应问题排查

排查Animator Trigger无法触发动画过渡的常见原因

以下是几个你可以逐一排查的点:

  • 检查过渡条件与Exit Time设置
    打开Animator窗口,找到Idle到Attack的过渡:

    • 确认过渡的条件只有Attacking Trigger,没有额外未满足的限制(比如Speed == 0这类布尔/数值判断)。
    • 把过渡的Has Exit Time关掉——如果开着这个选项,必须等Idle动画播放到结尾才会响应Trigger,而攻击需要即时触发,这个选项会导致点击后无法立刻切换动画。
  • 修正输入检测逻辑
    你用的Input.GetMouseButton(0)会在按住鼠标左键的每一帧都返回true,这意味着每一帧都在调用SetTrigger("Attacking"),连续触发Trigger可能导致Animator状态混乱。应该改用Input.GetMouseButtonDown(0),它只会在左键按下的那一帧返回true,确保只触发一次Trigger。

  • 验证Animator引用与代码执行
    给代码加个调试日志,确认anims不是空引用,且SetTrigger确实被执行了:

    if (Input.GetMouseButtonDown(0))
    {
        Debug.Log("触发Attack Trigger");
        anims.SetTrigger("Attacking");
    }
    

    运行游戏后查看控制台是否输出日志,排除空引用或代码未执行的问题。

  • 检查状态机层级与过渡方向

    • 确认Attack状态和Idle状态在同一个Layer(比如Base Layer),且该Layer的权重设为1。
    • 检查过渡的方向是不是Idle → Attack,别搞反成Attack → Idle了。
  • Trigger重置的特殊情况
    虽然Trigger会在被消耗后自动重置,但如果之前的动画过渡还没完成就连续触发,可能导致Trigger被忽略。可以尝试在Attack动画播放完成后,手动调用anims.ResetTrigger("Attacking")(一般不需要,但极端情况可以试试)。

内容的提问来源于stack exchange,提问作者Gustavo Rodrigues

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 05:32:17