Синхронизация анимаций в Unity (архитектура решения)
Реализуем классическую схему из 3 в ряд: объект исчез - все объекты, которые находятся выше, смещаются на один ряд ниже. Проблема: если запускать анимации для каждого из вышестоящих объектов по-отдельности, происходит заметная рассинхронизация движения. + Есть необходимость ловить событие, когда все анимации падения завершились (чтобы выполнять следующие действия\анимации и все в таком духе). Как правильно выстроить архитектуру решения, чтобы добиться всех этих целей? Мне приходит в голову такая реализация:
- Класс, управляющий положением объектов, проходит по списку объектов, которым пора двигаться, задает им новое положение и меняет их состояние на "в движении".
- При смене состояния каждый объект делает запись в списке "запланированные анимации".
- Когда все объекты обработаны, класс создает событие "Пора двигаться".
- Класс-проигрыватель анимаций выполняет все запланированные анимации сдвига (синхронизируя время по первой из списка, если это нужно) и по окончании всех создает событие "Сдвиги завершены".
Решение выглядит немного тяжеловесно, но оно должно решить проблему. Кроме того, оно позволит управлять и остальными анимациями (например взрыв, уничтожающий весь ряд). Подскажите пожалуйста, как такую эту задачу решают опытные Unity разработчики?
Ответы (1 шт):
Решил вопрос благодаря @user7860670. Проигрыватель анимаций не нужен, достаточно сделать задрежку после события и по ней же синхронизировать движение объектов.