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

Unity中如何中断正在播放的首个动画并启动第二个动画

Unity Animator实现动画强制中断切换的正确设置方法

关键设置步骤

1. 配置过渡的中断规则

选中拳击→踢腿、踢腿→拳击的双向过渡,在Inspector的Settings栏里找到Interrupt Source:

  • 设置为Current State:表示当前播放的动画(比如拳击)可被新触发的过渡(比如踢腿)直接中断
  • 确保Interruptible处于勾选状态(默认勾选,不要手动关闭)

2. 选对变量类型+正确调用

  • 使用Trigger的情况:直接在代码中调用animator.SetTrigger("Kick")即可,Trigger会在过渡完成后自动重置,无需手动清零。注意过渡条件仅绑定该Trigger,不要添加多余条件。
  • 使用布尔变量的情况:例如创建IsPunching和IsKicking两个布尔参数,切换时必须先将当前动画的布尔值设为false,再开启新动画的布尔值:
    // 从拳击切换到踢腿的示例代码
    animator.SetBool("IsPunching", false);
    animator.SetBool("IsKicking", true);
    
    状态机中的退出条件也要对应设置:拳击状态的退出条件设为IsKicking == true,踢腿状态的退出条件设为IsPunching == true。

3. 必须关闭过渡的「退出时间」

这是最容易忽略的核心点!所有需要强制中断的过渡,一定要取消勾选"Has Exit Time",并将Exit Time设为0。如果保留Exit Time,动画必须播放到指定时间点才允许切换,自然无法实现中断效果。
若需要轻微的平滑过渡,可以调整Transition Duration(比如设为0.1秒),但Exit Time必须关闭。

4. 状态机结构建议

  • 先设置一个Idle状态作为默认状态,拳击和踢腿状态均从Idle过渡进入,同时两者之间添加双向过渡
  • 动画片段尽量不要开启循环(除非有特殊需求,若为循环动画,需确保退出条件足够明确)

排查小技巧

  • 检查参数名是否存在拼写错误,代码中的名称必须与Animator面板中的参数名完全一致
  • 确认是否存在多个过渡条件叠加,导致新的触发信号被抵消
  • 打开Animator的Debug模式(面板右上角的Debug按钮),实时查看参数变化和状态切换,可快速定位问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:14:52