Інтеграція анімацій в Animator Controller Unity

Наша компанія з розробки відеоігор веде незалежні проекти, спільно з клієнтом створює ігри та надає додаткові операційні послуги. Досвід нашої команди дозволяє нам охопити всі ігрові платформи та розробити приголомшливий продукт, що відповідає баченню клієнта та перевагам гравців.

Від імерсивних застосунків до ігрових світів і 3D-сцен

Наша виділена команда для VR/AR/MR-розробки, Unity-продакшну і 3D-моделювання та анімації — з власними кейсами і презентаціями.

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Інтеграція анімацій в Animator Controller Unity
Середня
від 1 робочого дня до 1 тижня
Часті питання

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    683
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    862
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    491
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    533

Інтеграція анімацій в Animator Controller Unity

Animator Controller — не просто список анімацій з переходами. Це скінченний автомат, який живе рядом з ігровою логікою та при неакуратній налаштуванні стає джерелом більшості анімаційних багів у проекті: дергаві переходи, анімації застрягають у неправильному стані, Blend Tree не синхронізується зі швидкістю руху.

Архітектура Animator Controller під реальний проект

Типова помилка при рості проекту: все в одному шарі, всі стани в плоскому списку. Працює для прототипу з п'ятьма анімаціями, ломається при тридцяти. Правильна структура — кілька шарів з явно заданими Avatar Mask та Blending Mode.

Base Layer — локомоція та idle. Всі рухи від кореня: Blend Tree за Speed (idle → walk → run → sprint). Root Motion або In-Place — за вимогами геймплею. Цей шар працює завжди.

Upper Body Layer — атаки, прицілювання, взаємодії. Avatar Mask: верхня частина тіла. Blending: Override. Активується при вході в стан атаки, не переривает локомоцію нижної частини. Важливо: Weight цього шару потрібно контролювати через код (animator.SetLayerWeight(1, 1f)) при активації — інакше шар з нульовим вагою ігнорується повністю.

Additive Layer — hit reactions, дихання, aim sway. Blending: Additive. Анімації в цьому шарі накладаються поверх всього, не замінюючи. Дихальний цикл з амплітудою 0.02 по осі Y на spine — непомітний прямо, але персонаж без нього виглядає статуєю в idle.

Sub-State Machine використовується для комбо-систем та складних послідовностей. Групування станів всередину Sub-State Machine робить граф читаємим та дозволяє переиспользувати одну й ту ж логіку переходів для кількох персонажів.

Параметри та Transitions: як не отримати дергаві переходи

Тип параметра впливає на поведінку переходу. Float з dampTime 0.1–0.15 — для всього, що пов'язано зі швидкістю та плавними змінами. Bool — для станів (isGrounded, isAiming). Trigger — для одноразових подій (стрибок, удар). Integer — для індексів станів (0=idle, 1=walk), але в більшості випадків гірше Float.

Параметри Transition, які часто залишають дефолтними та отримують проблеми:

Has Exit Time — при включенні перехід чекає завершення поточної анімації. Добре для атак (не переривати середину удара). Погано для локомоції (персонаж не реагує на кнопку миттєво). За замовчуванням включений — для більшості станів потрібно виключати.

Transition Duration — у секундах або нормалізованому часі. 0.1–0.25 секунди для більшості переходів у локомоції. 0.05 або менше для швидких реакцій (приземлення, блок удара). 0 — миттєвий перехід, потрібен для станів смерті та телепортації.

Interruption Source — визначає, може ли новий Trigger перервати поточний Transition. Current State — поточний стан може повернути управління. Next State — наступний стан може бути переривано. Both — використовується в комбо-системах з cancel window. Ігнорування цього параметра приводить до того, що Trigger "проглатується" в момент Transition та атака не реєструється.

Blend Tree для локомоції: налаштування під Root Motion

1D Blend Tree за Speed — стандарт для руху вперед. Але strafing (рух убік) потребує 2D Blend Tree. Тип 2D Freeform Directional дає найкращий результат для восьминаправленої локомоції: forward, backward, left, right та діагоналі. Параметри: VelocityX та VelocityZ, оновляються з коду з dampTime.

Compute Thresholds → Compute from Root Motion Speed автоматично встановлює пороги з клипів. Це працює коректно лише якщо у клипах є Root Motion. Якщо використовується In-Place анімація — пороги потрібно встановлювати вручну, інакше Blend Tree інтерполює неправильно.

Sync між шарами: якщо Upper Body Layer використовує ті ж стани, що й Base Layer (наприклад, окремий idle з зброєю для верхної частини), використовується Sync чекбокс на шарі. Sync копіює State Machine з базового шару, але дозволяє задати інший Motion для кожного стану. Економить час та не рассинхронізує переходи.

Animation Rigging поверх Animator Controller

Animation Rigging (пакет com.unity.animation.rigging) додає процедурні обмеження поверх ключевої анімації. Two Bone IK для ніг та рук, Multi-Aim Constraint для голови при прицілюванні, Chain IK для хвостів та волосся.

Rig Builder компонент додається на об'єкт з Animator. Обмеження працюють в порядку шарів Rig — важливо для залежностей: спочатку плечо, потім передпліччя, потім кисть. Вага кожного обмеження (0.0–1.0) управляється через код або Animation Curve — зручно для плавного включення Foot IK при приземленні.

Терміни інтеграції

Масштаб завдання Орієнтовна тривалість
Базовий Animator Controller (idle, walk, run) від 4 до 8 годин
Багатошаровий контролер з боєвою системою від 2 до 4 днів
Повна інтеграція з Animation Rigging від 3 до 5 днів
Рефакторинг існуючого контролера від 1 до 3 днів

Вартість залежить від кількості станів, складності переходів та наявності існуючого коду управління Animator. Розраховується після аудиту проекту.