Как избавиться от перезапуска анимации?
При создании 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 шт):
Проблема оказалась в методе GrondCheck, который был расположен в FixedUpdate.
После того, как он был перенесён в Update, анимация смерти Wizard стала воспроизводиться правильно.