@PRIYD

Уместно ли тут использовать корутину?

Здравствуйте.
Задача: добавление анимации персонажу при повороте(при нажатии на клавишу А - поворот на 90*, при нажатии на S - поворот на 180*, при нажатии на D - поворот на -90*). После того, как проигралась анимация поворота(и персонаж повернул, соответственно), состояние должно вернуться в idle-анимацию.
Как я решал: создал корутину, которая ждет 1 сек и после возвращает состояние в idle. Код:
bool isWPressed = Input.GetKey(KeyCode.W);
        
if ( (Input.GetKey(KeyCode.D)) && (!isWPressed) )
{
     animator.SetBool("isLeftTurn", true);
     yield return new WaitForSeconds(1f);
     animator.SetBool("isLeftTurn", false);
}
else if ( (Input.GetKey(KeyCode.A)) && (!isWPressed) )
{
     animator.SetBool("isRightTurn", true);
     yield return new WaitForSeconds(1f);
     animator.SetBool("isRightTurn", false);
}
else if ( (Input.GetKey(KeyCode.S)) && (!isWPressed) )
{
     animator.SetBool("isBackTurn", true);
     yield return new WaitForSeconds(1f);
     animator.SetBool("isBackTurn", false);
}


Скриншот аниматора:
5eca176d3cc54008185781.png

Проблема: все работает, но что-то подсказывает, что это костыль и можно сделать правильнее. Какие альтернативы?
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy
Android developer at Yandex
Наверняка у этого аниматора есть коллбек на окончание анимации. Если нет, я буду удивлён.
Ответ написан
SKyRo
@SKyRo
GameDev, Unity, C#, Blender
Вы можете переходить в состояние поворота по триггеру, а дальше Has Exit Time.
Доки: Animation Parameters ; Animator.SetTrigger
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы