Как избавиться от перезапуска анимации?

При создании 2х мерного платформера столкнулся с багом, который не знаю как исправить. Есть 3 вида врага, есть удар в прыжке. При получении урона враги Enemy и Boss умирают и проигрывают анимацию смерти, но враг Wizard - нет(коварный какой). Способ получения урона и уничтожения у всех троих одинаковый. Анимация смерти так-же проигрывается одинаково.

Как я понимаю, из-за того, что враг постоянно находится в области получения урона (напомню, удар в прыжке), заново вызывается функция die и заново происходит воспроизведение анимации, что и мешает её корректному отображению (хотя другим врагам это не мешает). Пробовал разные способы решения с if и условиями на проверку количества жизней, но решение так и не смог найти. На всякий случай уточню, что это 3 разных скрипта взаимодействующих между собой.

public void Flying_kick() {
    isAttacking = true;
    if(isAttacking) {
        State = States.flying_kick;
        damage = 2;
        Collider2D[] enemies2 = Physics2D.OverlapCircleAll(FlyKickPosObject.position, FlyKickRange, enemy);
        for (int i = 0; i < enemies2.Length; i++) {
                enemies2[i].GetComponent<damagebleObject>().TakeDamage(damage);
        }
    }
    Invoke("Flying_kickOff", 0.2f);
}

private void Flying_kickOff() {
    isAttacking = false;
    damage = 0;
}

объект которому передаётся damage

public class damagebleObject : MonoBehaviour {

public void TakeDamage(int damage) {
    if (gameObject.tag == "Wizard") {
        Wizard.lives -= damage;
        dieWizard = GetComponent<Wizard>();
        dieWizard.Die(); 
    }
    if (gameObject.tag == "Enemy") {
        Skull.lives -= damage;
        dieSkull = GetComponent<Skull>();
        dieSkull.Die();
    }
    if (gameObject.tag == "Boss") {
        Angel.lives -= damage;
        dieAngel = GetComponent<Angel>();
        dieAngel.Die();
    }
}

}

И участок кода отвечающий за уничтожение объектов с тегами

public void Die() {
    if ( lives < 1) {
        attack = false;
        anim.SetInteger("Wizard", 2);
        Destroy(gameObject, 0.4f);
    }
}

Ответы (1 шт):

Автор решения: at0m

Проблема оказалась в методе GrondCheck, который был расположен в FixedUpdate.

После того, как он был перенесён в Update, анимация смерти Wizard стала воспроизводиться правильно.

→ Ссылка