2D игра на Unity. Анимация выполнена с помощью Spine.
У моего персонажа 2 состояния - перемещение и ожидание. Соответственно есть 2 одноименных анимации.
Персонаж перемещается с помощью transform от точки A в точку B по прямой, потом останавливается и ждет.
Когда персонаж перемещается играет анимация перемещения. Когда ожидает - ожидания.
Напомню, что обычно все анимации зацикленные и пока персонаж идет, повторяется анимация перемещения.
Проблема в том, что переход между анимациями происходит резко, за 1 кадр (что очевидно).
Прерывание анимации ходьбы может произойти на моменте, когда нога игрока поднята вверх. А анимации ожидания начинается с кадра, когда нога стоит внизу. За один кадр нога пролетает сверху вниз, что очень не естественно.
Как эту проблему решают другие разработчики 2D игр. В 90% никак. Посмотрел несколько 2D игр средних по величине японских студий (про 3D не говорим, там вроде всё нормально).
Другие разработчики делают пиксельную анимацию, чиби анимацию, ноги - "палочки" с тремя состояниями, уменьшают шаг приближая положение ног к положению при ожидании или просто ничего не делают и игрок дергается, при переходе от бега к ожиданию.
Что я пробовал.
Смешивать анимации. Выглядит как подшаг. Т.е. нога сверху идет вниз к позиции ожидания. Но игрок уже ожидает, не перемещаясь. Подшаг на месте. Тоже не очень естественно.
Уменьшать скорость на последнем участке чтобы подшаг происходил при уменьшении скорости и воспринимался как окончание движения. Выглядит лучше, но долго подбирать расстояние/скорость/смешение анимаций.
Какие ещё есть варианты? Как сделать плавный переход между анимациями?
PS
Сложные варианты по типу расчета кадров анимации ходьбы в зависимости от пройденного расстояния, чтобы на нужном кадре перейти к промежуточной анимации (которых несколько) просьба не предлагать.