Нажми — и увидишь, что делает команда
- ⏱ Сколько займёт
- 30–50 минут, 5 шагов. Каждый шаг заканчивается результатом на экране.
- 💻 Что нужно
- Компьютер с Windows или macOS. Понадобится Unity — бесплатная для учёбы, поставим на первом шаге. С телефона этот квест не проходится.
- ⏸ Если прервёшься
- Ничего не потеряется: прогресс сохраняется на этом устройстве. Вернёшься — продолжишь с того же шага.
- 🎓 Чему научишься
- скелетная анимация · граф состояний · связь кода и анимации
Скелет под кожей
У подножия маяка стоит фигура в доспехе. Она не двигалась много лет.
«Страж, — говорит Марк тихо. — Пока в нём нет движения, это статуя. Оживёт — станет персонажем».
Стоит, идёт, бьёт. Между этими тремя состояниями и живёт любой герой большой игры.
Это записано прямо из Unity: движок посчитал каждый кадр игры. К концу квеста такая сцена будет работать у тебя.
Читать текстом
Последний квест экспедиции. Дальше игра начинает выглядеть как настоящая.
На mixamo.com лежат тысячи готовых анимаций — ходьба, бег, прыжки, удары, танцы. Бесплатно. Загружаешь свою модель, выбираешь движение, скачиваешь. Этим пользуются и профессионалы.
Humanoid — стандарт «человекоподобного скелета»: две руки, две ноги, голова. Unity умеет переносить такие анимации с одной модели на другую автоматически.
Граф состояний
Такая схема называется конечный автомат: набор состояний и правил перехода между ними. Здесь его не пишут кодом, а рисуют мышкой. Если проходил Godot: ровно то же было у тамошнего врага.
- 1ПКМ в Project → Create → Animation → Animator ControllerНазови
WarriorAC. Это схема, по которой игра выбирает анимацию. Схема на картинке — общая, для 2D-окна: окна Animator на ней нет, кружки просто показывают порядок шагов. - 2Поле Controller в компоненте AnimatorВыдели модель героя и перетащи контроллер в это поле.
- 3Окно Animator — клетки и стрелкиWindow → Animation → Animator. Перетащи клипы прямо в него: первый станет оранжевым — это состояние по умолчанию.
- 4Вкладка Parameters → плюс → FloatНазови
Speed. Это число код будет передавать каждый кадр. - 5Стрелки между клетками — переходыПКМ по Idle → Make Transition → щёлкни по Walking. Выдели стрелку: в Инспекторе внизу блок Conditions → плюс →
SpeedGreater 0.1. И обязательно сними галочку Has Exit Time.
Обратный переход тоже нужен: ПКМ по Walking → Make Transition → на Idle, условиеSpeedLess 0.1, Has Exit Time тоже снять. Без него герой, раз пойдя, будет шагать вечно.
Обязательно: выдели стрелку и сними галочку Has Exit Time. Иначе переход будет ждать конца анимации, и герой продолжит стоять ещё секунду после нажатия клавиши.

- 1Project — создай Animator ControllerПКМ по пустому месту в папке → Create → Animation → Animator Controller. Назови WarriorAC: это схема, по которой игра выбирает анимацию.
- 2Hierarchy — выдели герояКлик по строке модели — справа откроются её детали.
- 3Компонент Animator и поле ControllerУ импортированной модели Animator появляется сам. Перетащи в его поле Controller свой WarriorAC — пустое поле означает «герой стоит столбом».
- 4Окно Animator — на кадре его нетОно открывается двойным кликом по WarriorAC в Project (или Window → Animation → Animator) и встаёт такой же вкладкой рядом со Scene. Внутри — клетки состояний, стрелки-переходы и список Parameters.
- 5Play — проверь состоянияСтоишь — Idle, идёшь — Walking. Герой скользит в позе буквы «Т» — значит, в Parameters нет Float с именем Speed или скрипт не передаёт в него число.
Это настоящий экран Unity 6 — такой же, как у тебя. Нажимай на кружки по порядку: метка покажет место, строка ниже объяснит, зачем оно. Отмечай пройденное — прогресс сохранится.
Код говорит анимации, что делать
using UnityEngine; public class PlayerAnimation : MonoBehaviour { [SerializeField] private Animator animator; private Rigidbody body; private void Start() => body = GetComponentInParent<Rigidbody>(); private void Update() { float speed = new Vector2(body.linearVelocity.x, body.linearVelocity.z).magnitude; animator.SetFloat("Speed", speed); } }
SetFloat передаёт число в граф, и тот сам решает, какую клетку включить. Код ничего не знает про анимации — он просто сообщает факт: «скорость такая».Это важная мысль: код не управляет анимацией напрямую. Он описывает состояние героя, а граф переводит состояние в движение. Поэтому аниматор может всё перерисовать, не трогая код.
Куда вешать: на модель внутри Player — тот самый объект, где уже стоит компонент Animator. В поле Animator перетащи его же (или нажми кружок справа и выбери из списка). Rigidbody скрипт найдёт сам — он лежит на родителе, на капсуле, потому и GetComponentInParent.
// удар — не число, а разовое событие: для него берут триггер if (Mouse.current.leftButton.wasPressedThisFrame) animator.SetTrigger("Attack");
Attack и протяни стрелку из Any State в анимацию удара. Any State значит «из любого состояния» — бить можно и стоя, и на бегу.Две вещи, без которых не заработает. Первая: вверху PlayerAnimation.cs добавь
using UnityEngine.InputSystem; — иначе Mouse не найдётся. Вторая: протяни стрелку обратно, из удара в Idle, и вот на ней Has Exit Time оставь включённой — тогда переход дождётся конца замаха. Забудешь — герой зависнет в ударе навсегда.Разница простая: Float — это «сколько», Bool — «да или нет», Trigger — «сейчас случилось». Для удара нужен именно третий.

Ключевые кадры и захват движения
Есть два способа оживить героя. Первый — ключевые кадры: аниматор руками ставит позы, а компьютер дорисовывает движение между ними.
Второй — захват движения: на живого актёра вешают датчики, он играет сцену, и движение переносят на модель. Так делают реалистичную ходьбу и бой в больших играх.
В студиях используют оба: захват берут для обычных движений, а всё выразительное — удары, падения, эмоции — аниматор дорабатывает вручную.
Что обычно ломается
Четыре беды, которые случаются с каждым в первый раз. Теперь ты знаешь, куда смотреть.
Дозор
То, что получилось, — законченный вертикальный срез игры: мир, персонаж, управление, анимация, сборка. Именно так выглядит демо, которое студии показывают издателям.
Читать текстом
И оглянись на пройденное: девять квестов назад ты ставил Unity в первый раз. Сейчас у тебя два собранных билда, знание C#, префабы, корутины, физика, интерфейс, ИИ врага, Terrain, камера и анимации. Это уровень, с которого начинают работать в маленьких студиях.
Поднимай флаг.