Монтаж анімаційних клипів в таймлайні ігор
Unity Timeline — це не просто «кінематик для катсцен». Це інструмент оркестровки, який синхронізує анімації, аудіо, активацію об'єктів, Cinemachine камери та кастомні сигнали в єдину послідовність з точністю до кадру. Коли це настроєно правильно, вся катсцена або геймплейний івент керується одним PlayableDirector'ом. Коли зроблено наспіх — отримується хаотичний набір Coroutines, розкиданих по п'яти скриптам, які рассинхронізуються при зміні FPS або при пропуску кадру.
Анімаційні треки та binding
Кожен анімаційний трек у Timeline прив'язаний до конкретного Animator через Output binding. Це перше місце, де виникають проблеми при переіспользовуванні Timeline Asset'а між різними персонажами: binding'и зберігаються в PlayableDirector компоненті, а не в самому .playable файлі. Це значить, що один Timeline Asset можна переіспользовувати з різними персонажами через director.SetGenericBinding(track, newAnimator) — зручно для діалогових систем, де одна і та ж структура катсцени відтворюється з різними NPC.
Clip'и на анімаційному треку керуються двома параметрами: Ease In/Out та Clip Transform. Ease In/Out — це blend від нейтральної пози до анімації, контролює, як клип «з'являється». Але нейтральна поза — це не T-pose та не idle, це остання поза, яку Animator мав до початку Timeline. Якщо персонаж в idle стоїть з опущеними руками, а катсцена починається з рукою у обличчя — без правильного Ease In буде жорсткий pop.
Рішення: створити короткий transition clip (0.5–1 секунда), який починається від idle позиції та плавно виводить в першу позу катсцени. Цей клип ставиться першим на треку з мінімальним Ease In. Потім overlap з основною дією. Так перехід працює незалежно від того, з якого стану персонаж прийшов.
Blending клипів та override vs additive mode
По замовчуванню кожен анімаційний трек — override mode: він повністю контролює весь Animator. Для катсцен з кількома одночасними шарами (тіло йде, голова обертається, рука жестикулює) правильна архітектура — кілька треків з різними Layer Weight'ами, або один трек з анімаціями, що покривають потрібні кості через Avatar Mask.
Avatar Mask на анімаційному треку Timeline обмежує, які кості цей трек контролює. Це еквівалент Animator Layer Mask, але на рівні Timeline клипу. Паттерн: трек 1 (Full Body mask) — locomotion або idle. Трек 2 (Upper Body mask) — жест або gesture. Трек 3 (Head mask) — look-at або реакція. Blend між ними керується Track Weight.
Проблема виникає, коли два треки з overlapping масками конкурюють за одну кість. Timeline використовує override blending по замовчуванню — останній трек перемагає. Якщо потрібен additive blending (складти трансформи), Track Mode потрібно переключити на Override з Additive Clip. Це не очевидно в UI — настройка знаходиться в контекстному меню треку, не в інспекторі клипу.
Signal Track та синхронізація з геймплейною логікою
Signal Track — один з найнедооцінених інструментів Timeline. Це механізм для відправлення подій з часової шкали в ігрову логіку без прямої залежності. Signal Emitter на часовій шкалі → Signal Asset (ScriptableObject) → Signal Receiver на GameObject з підписаним методом.
Застосування: включити hitbox на конкретному кадрі атаки в катсцені, запустити particle system в момент вибуху, переключити AI state після завершення діалогової анімації. Без Signal Track все це робиться через Animation Events на клипах або через Coroutine з WaitForSeconds — обидва методи ломаються при зміні тайминга анімації.
Важливий момент: Signal Emitter спрацьовує тільки при нормальному відтворенні (не при scrubbing в Editor). Для debug потрібно або вручну вибивати signal receiver, або використовувати Retroactive флаг на Emitter (спрацьовує, якщо Timeline seekнули за точку сигналу).
Cinemachine інтеграція та монтаж камери
Cinemachine Track у Timeline — це монтажний стіл для ігрових камер. Кожен clip на треку — одна віртуальна камера (CinemachineVirtualCamera). Blend між камерами керується Ease In/Out довжиною overlap'а.
Стандартна проблема: при переході між камерами з різними Look At target'ами Cinemachine пробує інтерполювати між двома різними точками прицілювання, що створює нежиланий «плавання» камери в кадрі переходу. Фікс — Blend Hint: Override Lookat On Blend = true на другій камері, або ручний control через CinemachineBrain.m_DefaultBlend.
| Масштаб задачі | Строк |
|---|---|
| Коротка катсцена (10–30 секунд, 2–3 персонажа) | 2–5 днів |
| Діалогова система на Timeline (5–10 діалогів) | 1–2 тижні |
| Повноцінна ігрова кат-сцена (60–120 секунд) | 1–3 тижні |
| Ревізія та рефакторинг існуючого Timeline | 1–3 дні |
Вартість визначається після вивчення поточної структури проекту та списку необхідних послідовностей.





