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

Unity2D敌人攻击动画中断问题:如何让攻击完成后再切换状态

解决敌人攻击动画被中断的问题

核心问题是当前逻辑在玩家移出攻击范围时立刻终止攻击状态,导致动画被打断。要解决这个问题,必须让攻击动画完整播放完毕后,再切换回追击状态,具体修改步骤如下:

1. 新增状态控制变量

在敌人脚本的类中添加两个变量,用于跟踪攻击状态和是否需要终止攻击:

private bool isAttacking; // 标记当前是否正在播放攻击动画
private bool shouldStopAttack; // 标记玩家是否已离开攻击范围,需在动画结束后停止攻击

2. 修改攻击触发与状态判断逻辑

调整EnemyLogic和新增攻击检查方法,避免直接中断攻击:

void Update()
{
    EnemyLogic();
    CheckAttack(); // 新增:检查是否满足攻击条件
    if(!attackMode)
    {
        Move();
    } 
}

void EnemyLogic()
{
    distance = Vector2.Distance(transform.position, target.position);
    // 玩家离开攻击范围时,仅标记需要停止攻击,不立刻中断
    if(distance > attackDistance)
    {
        shouldStopAttack = true;
    }
}

// 新增:检查攻击触发条件
void CheckAttack()
{
    // 满足攻击距离、不在冷却、不在攻击动画中时,触发攻击
    if(distance <= attackDistance && !cooling && !isAttacking)
    {
        attackMode = true;
        isAttacking = true;
        shouldStopAttack = false;
        anim.SetBool("Attack", true);
        anim.SetBool("canWalk", false);
        cooling = true;
        // 这里可以添加攻击伤害逻辑
    }
}

3. 添加动画完成回调

在敌人的Animator中,找到攻击动画LightBandit_Attack,在动画的最后一帧添加一个动画事件(Animator Event),调用OnAttackAnimationComplete方法:

// 攻击动画播放完毕时触发的回调
void OnAttackAnimationComplete()
{
    isAttacking = false;
    // 如果玩家已经离开攻击范围,就切换回追击状态
    if(shouldStopAttack)
    {
        StopAttack();
        shouldStopAttack = false;
    }
    else
    {
        // 玩家仍在攻击范围内,可继续攻击(根据需求调整,比如保留冷却逻辑)
        cooling = false;
        attackMode = false;
        anim.SetBool("Attack", false);
    }
}

4. 调整移动逻辑

修改Move方法,确保攻击动画播放时敌人不会移动:

void Move()
{
    anim.SetBool("canWalk", true);
    // 不在攻击状态时才移动
    if(!isAttacking)
    {
        Vector2 targetPosition = new Vector2(target.position.x, transform.position.y);
        transform.position = Vector2.MoveTowards(transform.position, targetPosition, moveSpeed * Time.deltaTime);
    }
}

原理说明

通过isAttacking锁定攻击状态,动画未完成前不允许切换回移动;用shouldStopAttack延迟处理玩家离开的逻辑,直到攻击动画播放完毕。这样既保证了攻击动作的完整性,又能在动画结束后正常恢复追击。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:10:22