@vovka_losira

Почему не работает корутина?

Есть функция переключения состояния персонажа. Хочу чтоб переключение происходило только после завершения анимации. Сделал корутину, но не работает( Помогите пожалуйста .

public void Change_status(Status _status)
    {
        StartCoroutine(WaitForAnimation("SwordHit"));

        status = _status;
        if (_status == Status.Attack)
        {
            if (anim.GetBool(walkAnimName))
            {
                anim.SetBool(walkAnimName, false);
                anim.SetBool("isAttacking", true);
            }
        }
        else if (_status == Status.Walk)
        {
            if (!anim.GetBool(walkAnimName))
            {
                anim.SetBool(walkAnimName, true);
                anim.SetBool("isAttacking", false);
            }

        }
        else if (_status == Status.Idle)
        {
            if (!anim.GetBool(walkAnimName))
            {
                anim.SetBool(walkAnimName, false);
            }
        }
    }

    private IEnumerator WaitForAnimation(string _name)
    {
        while (anim.GetCurrentAnimatorStateInfo(0).IsName(_name))
        {
            yield return null;
        }
    }
  • Вопрос задан
  • 128 просмотров
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos Куратор тега Unity
Ну так корутина у вас ничего и не выполняет. Открутилась она и все. А весь код после StartCoroutine сразу выполнится )
Ответ написан
@K1ald
У вас там корутины нет с названием "SwordHit"...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы