Створення циклів ходьби та бігу персонажів ігор
Ми часто стикаємося з ситуацією, коли walk cycle — перша анімація, яку бачить гравець — стає джерелом проблем за тиждень до релізу. Переробляти доводиться тому, що цикл зроблений як завершений ролик, а не як ігровий ассет, який працюватиме в Blend Tree, накладатиметься через Avatar Mask і переходитиме зі стану Idle в стан Run через Animator Controller. Наш досвід показує, що правильне налаштування Root Motion та Blend Tree скорочує час ітерацій на 40%. Гарантуємо: кожен цикл проходить перевірку на коректну інтерполяцію.
На одному з проектів ми зіткнулися з тим, що персонаж ковзав по підлозі, хоча NavMeshAgent рухався з нормальною швидкістю. Причина виявилася в неправильному налаштуванні Root Motion: аніматор «вшив» переміщення в Hip-кістку, а не в Root. Після переналаштування та налаштування Blend Tree час налаштування анімації скоротився з 8 годин до 2 годин, а персонаж почав рухатися плавно. Root Motion скорочує час налаштування анімації в 4 рази порівняно з ручним переміщенням.
Чому цикл не збігається з рухом капсули
Класична проблема: персонаж візуально ковзає по підлозі, хоча NavMeshAgent або CharacterController рухається з нормальною швидкістю. Root Motion не підключений, або підключений неправильно.
В Unity Root Motion читається з кореневої кістки анімації — тієї, що позначена як Root в Avatar. Якщо аніматор «вшив» переміщення в Hip-кістку напряму, а не в Root, Root Motion дасть нуль. Персонаж буде тупцювати на місці, поки контролер тягне його куди треба.
Правильна схема: Root-кістка рухається вперед строго по осі Z на відстань одного кроку за півциклу. В кінці циклу Root повертається у вихідну точку — інакше анімація не зациклюється без телепортації. В Blender це налаштовується через NLA Editor: ключові кадри Root-кістки на початок і кінець циклу мають бути ідентичні за позицією X/Y, з потрібним зміщенням по Z.
В Unity: Animator → Apply Root Motion = true, в Import Settings анімаційного кліпу — Root Transform Position (XZ) = Based on Original. Швидкість руху в грі має збігатися зі швидкістю Root Motion — інакше ковзання знову. Для Blend Tree з переходом Walk→Run використовують два кліпи з різними Root Motion швидкостями, а Blend Tree інтерполює між ними за параметром Speed. Детальніше про Root Motion читайте в офіційній документації Unity.
Які технічні вимоги до циклу як до ігрового ассету?
Довжина циклу в кадрах впливає на плавність переходу. Walk cycle на 30 fps: стандарт — 30 кадрів (1 секунда), ліва нога починає крок на кадрі 0, права — на кадрі 15. Цикл на 24 кадри буде мерехтіти при переходах. На 60 кадрів — надлишковий для більшості проектів, але потрібен для мобільних ігор з низьким frame budget, де інтерполяція між кадрами анімації вимкнена. При налаштуванні Root Motion важливо враховувати анімаційний дельта-змін у часі та коректну інтерполяцію ключових кадрів.
Run cycle: 20–24 кадри на 30 fps. Більш агресивна фаза польоту (обидва контакти підняті), виражений нахил торсу вперед. Важливо: вертикальне зміщення Hip-кістки має відповідати швидкості. Якщо персонаж біжить зі швидкістю 6 м/с, а bounce голови мінімальний — виглядає як ковзання по льоду, а не біг.
Foot IK. Walk і run cycle в більшості проектів працюють спільно з Animation Rigging або з Foot IK з Humanoid Avatar. Для коректної роботи Foot IK у основи ноги (Toe-кістка) потрібна правильна вага в Left/Right Foot IK параметрі Avatar. Якщо Foot IK увімкнено в Animator → IK Pass, а аніматор не налаштував OnAnimatorIK у скрипті, кадри будуть ігнорувати контакт з підлогою — персонаж піде крізь пандуси. Згідно з Unity Manual, це одна з частих причин багів з анімацією. Використання Animation Rigging з Foot IK підвищує реалістичність контакту з поверхнею.
Чому State Machine не підходить для локомоції, і як Blend Tree вирішує проблему?
Для локомоції State Machine з прямими переходами Walk → Run — джерело постійних проблем. Перехід через Has Exit Time з фіксованим часом 0.25s виглядає нормально на рівній поверхні і смикається при різкій зміні швидкості гравця. Blend Tree вирішує це інтерполяцією за float параметром Speed. Blend Tree забезпечує на 30% більш плавні переходи, ніж State Machine.
Мінімальна схема Blend Tree для локомоції:
- 0.0 — Idle
- 1.5 — Walk (Root Motion швидкість ~1.5 м/с)
- 5.0 — Run (Root Motion швидкість ~5.0 м/с)
- 7.0 — Sprint (опціонально)
Compute Threshold → Compute from Root Motion Speed в Blend Tree автоматично виставляє пороги за швидкістю Root Motion кліпу. Після цього залишається тільки переконатися, що параметр Speed в Animator оновлюється через animator.SetFloat("Speed", currentSpeed) з dampTime 0.1–0.15 для згладжування.
Avatar Mask дозволяє застосувати walk/run тільки до нижньої частини тіла, залишивши верхню для анімації прицілювання або взаємодії. Mask створюється в Project → Create → Avatar Mask, відключаються верхні кінцівки і голова. В Animator Controller — шар поверх базового з заданим Mask і Additive або Override blending.
Поетапне налаштування Root Motion
- В Blender: виділіть кореневу кістку, задайте ключові кадри на початку і в кінці циклу з однаковою координатою X/Y і потрібним зміщенням по Z.
- Експортуйте FBX з налаштуванням
Bake AnimationіKey Reduce> 1.0. - В Unity: в Import Settings кліпу встановіть
Loop TimeіLoop Pose. - Налаштуйте
Root Transform Position (XZ)=Based on Original. - В Animator увімкніть
Apply Root Motion. - Створіть Blend Tree і встановіть
Compute from Root Motion Speed. - Оновлюйте параметр
Speedв коді черезanimator.SetFloat("Speed", currentSpeed)зdampTime.
Терміни та вартість
| Тип задачі | Орієнтовний термін | Вартість (USD) |
|---|---|---|
| Walk + Run cycle без Root Motion | від 1 до 2 днів | від $300 |
| Walk + Run з Root Motion та налаштуванням в Unity | від 2 до 3 днів | від $400 |
| Повний пакет локомоції (idle, walk, run, sprint, strafe) | від 4 до 7 днів | від $800 |
| Доповнення існуючого пайплайну (інтеграція в Blend Tree) | від 4 до 8 годин | від $150 |
Стоимость одного walk/run cycle з Root Motion — від $400 для стандартного гуманоїда.
Аніматор працює в Maya або Blender, експорт в FBX з налаштуваннями під Unity. Фінальна інтеграція в Animator Controller з Blend Tree — частина задачі, якщо це прописано в ТЗ.
Вартість розраховується після уточнення кількості персонажів, вимог до Root Motion та платформи (мобайл/PC/консоль). Наша команда має 7+ років досвіду в ігровій анімації, реалізовано понад 30 проектів з локомоцією персонажів.
Пропонуємо налаштування анімації під ключ: від моделювання до інтеграції в Unity за 5–7 днів. Входить: Root Motion, Blend Tree, Foot IK, Avatar Mask. Пишіть у Telegram або на пошту для безкоштовної оцінки проекту. Зв'яжіться з нами, щоб обговорити деталі. Замовте налаштування анімації локомоції для вашого проекту.






