К карте
ВЕРФЬ · UNITY · КВЕСТ 9
Страж маяка
0
Прогресс0 / 5
СДЕЛАЙ ПЕРВЫЙ ХОД

Нажми — и увидишь, что делает команда

Жми кнопки по очереди — это три настоящие команды.
ПЕРЕД СТАРТОМ
⏱ Сколько займёт
30–50 минут, 5 шагов. Каждый шаг заканчивается результатом на экране.
💻 Что нужно
Компьютер с Windows или macOS. Понадобится Unity — бесплатная для учёбы, поставим на первом шаге. С телефона этот квест не проходится.
⏸ Если прервёшься
Ничего не потеряется: прогресс сохраняется на этом устройстве. Вернёшься — продолжишь с того же шага.
🎓 Чему научишься
скелетная анимация · граф состояний · связь кода и анимации
ШАГ 1 ИЗ 5 · ВЕРФЬ · UNITY · КВЕСТ 9

Скелет под кожей

ЧТО ПРОИСХОДИТ
ЭПИЗОД 9Маяк дозорных

У подножия маяка стоит фигура в доспехе. Она не двигалась много лет.

«Страж, — говорит Марк тихо. — Пока в нём нет движения, это статуя. Оживёт — станет персонажем».

Стоит, идёт, бьёт. Между этими тремя состояниями и живёт любой герой большой игры.

Марк · корабельный мастер верфи
ЧТО ПОЛУЧИТСЯ
ЗАПИСЬ ГОТОВОЙ ИГРЫ
Внизу — граф: Стоит → Идёт → Бьёт. Подсвечено состояние, в котором страж прямо сейчас, и у каждого своё движение. Так устроены герои во всех больших играх.

Это записано прямо из Unity: движок посчитал каждый кадр игры. К концу квеста такая сцена будет работать у тебя.

СНАЧАЛА — ПОСМОТРИ
ЖИВАЯ ЗАПИСЬ ДВИЖКА
Живая анимация бега в окне Game: ноги перебирают, модель едет по земле. Стоит, идёт, бежит, бьёт — это разные клипы, и переключать их между собой ты научишь игру сегодня.
Марк
Читать текстом
Старшина верфи, у подножия маяка стоит фигура в доспехе. Пока в ней нет движения, это статуя. Сегодня оживим её. Секрет анимации такой: внутри модели живёт скелет из костей, и кожа тянется за ними. Поэтому одно и то же движение надевается на разных персонажей, а тысячи готовых анимаций лежат бесплатно на Mixamo. Соберёшь граф состояний: стоит, идёт, бьёт — и код, который его переключает.

Последний квест экспедиции. Дальше игра начинает выглядеть как настоящая.

НОРА · ВЕДУЩАЯ СТУДИИ
Анимация в 3D устроена хитро: внутри модели живёт скелет из костей. Аниматор двигает кости, а кожа модели тянется за ними. Именно поэтому одну и ту же анимацию можно надеть на разных персонажей.

На mixamo.com лежат тысячи готовых анимаций — ходьба, бег, прыжки, удары, танцы. Бесплатно. Загружаешь свою модель, выбираешь движение, скачиваешь. Этим пользуются и профессионалы.

ЗАДАНИЕ 1 · АНИМАЦИИ
1
Скачай анимации
На mixamo выбери модель → вкладка Animations → возьми Idle (стоит), Walking, Running и любой удар. Сайт просит аккаунт Adobe — регистрируйся вместе с родителем; альтернатива без регистрации — бесплатные наборы анимаций в Asset Store по запросу «animation free».
2
Формат при скачивании
FBX for Unity, Without Skin для анимаций (модель уже есть) и With Skin — один раз для самой модели.
3
Настрой тип скелета
Выдели импортированный файл → вкладка Rig → Animation Type: Humanoid → Apply.
4
Проверь
Разверни файл треугольничком — внутри лежит клип анимации. Нажми на него: снизу появится окошко с предпросмотром.

Humanoid — стандарт «человекоподобного скелета»: две руки, две ноги, голова. Unity умеет переносить такие анимации с одной модели на другую автоматически.

ШАГ 2 ИЗ 5 · ВЕРФЬ · UNITY · КВЕСТ 9

Граф состояний

КАК УСТРОЕНА АНИМАЦИЯ
ЧТО ЭТО
Animator Controller
Схема из клеток и стрелок. Клетка — анимация, стрелка — переход между ними.
ЧТО ЕЮ УПРАВЛЯЕТ
Parameters
Числа, галочки и триггеры, которые задаёт твой код.
ГДЕ СМОТРЕТЬ
окно Animator
Window → Animation → Animator. Во время Play видно, какая клетка активна прямо сейчас.

Такая схема называется конечный автомат: набор состояний и правил перехода между ними. Здесь его не пишут кодом, а рисуют мышкой. Если проходил Godot: ровно то же было у тамошнего врага.

ЗАДАНИЕ 2 · ГРАФ
ГРАФ АНИМАЦИЙ — ЖМИ НА КРУЖОКнажми на кружок — покажу место
FileEditAssetsGameObjectComponentWindowHelpLayout⬡ HierarchySampleSceneMain CameraDirectional LightPlayerBackgroundWaterSurface◈ SceneGame⚙ InspectorPlayerTransformSprite RendererRigidbody 2DBox Collider 2DAdd Component▤ ProjectConsoleAssetsScenesScriptsSprites▶ Game
  • 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 → плюс → Speed Greater 0.1. И обязательно сними галочку Has Exit Time.

    Обратный переход тоже нужен: ПКМ по Walking → Make Transition → на Idle, условие Speed Less 0.1, Has Exit Time тоже снять. Без него герой, раз пойдя, будет шагать вечно.
Отмечено:0 из 5

Обязательно: выдели стрелку и сними галочку Has Exit Time. Иначе переход будет ждать конца анимации, и герой продолжит стоять ещё секунду после нажатия клавиши.

Ты забыл снять Has Exit Time на переходе из Idle в Walking. Что почувствует игрок?
Герой начнёт идти с заметной задержкой
Анимация вообще не включится
Герой будет идти вечно
НАСТОЯЩИЙ ЭКРАН UNITY — КУДА НАЖИМАТЬ
ТВОЙ ЭКРАН UNITY — КУДА НАЖИМАТЬнажми на кружок — покажу место
Окно редактора
  • 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 или скрипт не передаёт в него число.
Отмечено:0 из 5

Это настоящий экран Unity 6 — такой же, как у тебя. Нажимай на кружки по порядку: метка покажет место, строка ниже объяснит, зачем оно. Отмечай пройденное — прогресс сохранится.

ШАГ 3 ИЗ 5 · ВЕРФЬ · UNITY · КВЕСТ 9

Код говорит анимации, что делать

ЗАДАНИЕ 3 · СВЯЗЬ
PlayerAnimation.csC#
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);
    }
}
Скорость берётся только по X и Z — падение по Y не должно включать анимацию бега. SetFloat передаёт число в граф, и тот сам решает, какую клетку включить. Код ничего не знает про анимации — он просто сообщает факт: «скорость такая».

Это важная мысль: код не управляет анимацией напрямую. Он описывает состояние героя, а граф переводит состояние в движение. Поэтому аниматор может всё перерисовать, не трогая код.

Куда вешать: на модель внутри Player — тот самый объект, где уже стоит компонент Animator. В поле Animator перетащи его же (или нажми кружок справа и выбери из списка). Rigidbody скрипт найдёт сам — он лежит на родителе, на капсуле, потому и GetComponentInParent.

ЗАДАНИЕ 4 · УДАР
PlayerAnimation.csC#
// удар — не число, а разовое событие: для него берут триггер
if (Mouse.current.leftButton.wasPressedThisFrame)
    animator.SetTrigger("Attack");
В Parameters заведи Trigger с именем Attack и протяни стрелку из Any State в анимацию удара. Any State значит «из любого состояния» — бить можно и стоя, и на бегу.

Две вещи, без которых не заработает. Первая: вверху PlayerAnimation.cs добавь using UnityEngine.InputSystem; — иначе Mouse не найдётся. Вторая: протяни стрелку обратно, из удара в Idle, и вот на ней Has Exit Time оставь включённой — тогда переход дождётся конца замаха. Забудешь — герой зависнет в ударе навсегда.

Разница простая: Float — это «сколько», Bool — «да или нет», Trigger — «сейчас случилось». Для удара нужен именно третий.

СОБЕРИ ПОРЯДОК
ПОРЯДОК НАСТРОЙКИ АНИМАЦИИ
Написать скрипт, который зовёт SetFloat каждый кадр
Создать Animator Controller и назначить его модели
Скачать модель и анимации с mixamo
Завести параметр Speed и протянуть переходы
Поставить Animation Type: Humanoid и нажать Apply
Перетащить клипы в окно Animator
ЭКСКУРС
ПРОФЕССИЯ

Ключевые кадры и захват движения

Есть два способа оживить героя. Первый — ключевые кадры: аниматор руками ставит позы, а компьютер дорисовывает движение между ними.

Второй — захват движения: на живого актёра вешают датчики, он играет сцену, и движение переносят на модель. Так делают реалистичную ходьбу и бой в больших играх.

В студиях используют оба: захват берут для обычных движений, а всё выразительное — удары, падения, эмоции — аниматор дорабатывает вручную.

ШАГ 4 ИЗ 5 · ВЕРФЬ · UNITY · КВЕСТ 9

Что обычно ломается

РАЗБОР ОШИБОК
ГЕРОЙ ПОЛЗЁТ ПО ЗЕМЛЕ
модель смещена
Позиция модели внутри Player должна быть (0, 0, 0). Проверь и обнули.
НОГИ ЕДУТ, ГЕРОЙ СТОИТ
нет связи со скоростью
Скрипт не нашёл Rigidbody или не заполнено поле animator.
АНИМАЦИЯ ДЁРГАЕТСЯ
слишком резкие переходы
Увеличь Transition Duration на стрелке до 0,15–0,25 с.
ГЕРОЙ УЕЗЖАЕТ САМ
включён Root Motion
Сними галочку Apply Root Motion в компоненте Animator — движением управляет физика, а не анимация.

Четыре беды, которые случаются с каждым в первый раз. Теперь ты знаешь, куда смотреть.

Герой на месте перебирает ногами и при этом медленно уезжает вперёд сам собой. Что включено?
Apply Root Motion — движением управляет анимация, а не физика
Слишком большая скорость
Has Exit Time
ШАГ 5 ИЗ 5 · ВЕРФЬ · UNITY · КВЕСТ 9

Дозор

ЗАДАНИЕ 5 · ФИНАЛЬНОЕ
1
Собери всё вместе
Карта из седьмого квеста, герой с камерой из восьмого, анимации из этого.
2
Три состояния минимум
Стоит, идёт, бежит. Плюс удар по кнопке мыши. Бег отделяют вторым порогом: Walking → Running при Speed > 4, обратно при Speed < 4. Числа подгони под свою скорость — посмотри в Инспекторе, какое Speed показывает граф во время Play.
3
Пробегись и запиши видео
На Windows — Win+G, на Mac — Cmd+Shift+5. Тридцать секунд бега по своей карте.
4
Собери билд
File → Build Profiles → Windows или macOS → Build. Как в шестом квесте, но теперь 3D.

То, что получилось, — законченный вертикальный срез игры: мир, персонаж, управление, анимация, сборка. Именно так выглядит демо, которое студии показывают издателям.

НОРА · ВЕДУЩАЯ СТУДИИ
Экспедиция «Берег дозорных» закрыта. Ты собрал 3D-карту, героя от третьего лица и анимации — три вещи, из которых состоит любой современный экшен.
Марк
Читать текстом
Экспедиция закрыта, и ты Тех-артист. Ты собрал вертикальный срез игры: мир, персонаж, управление, анимация, сборка. Именно так выглядит демо, которое студии показывают издателям. И главное, что ты сегодня понял: код не управляет анимацией напрямую. Он только сообщает состояние, а граф сам решает, какое движение включить. Оглянись — девять квестов назад ты ставил Unity впервые.

И оглянись на пройденное: девять квестов назад ты ставил Unity в первый раз. Сейчас у тебя два собранных билда, знание C#, префабы, корутины, физика, интерфейс, ИИ врага, Terrain, камера и анимации. Это уровень, с которого начинают работать в маленьких студиях.

Поднимай флаг.

Экспедиция закрыта!

Герой ходит, бегает и бьёт с настоящими анимациями. 3D-экшен собран. Грейд ТЕХ-АРТИСТ.

🏅 Забрать диплом Вернуться на верфь
🔒

Этот остров ещё закрыт

Сначала пройди предыдущий квест — хотя бы просмотри все шаги.

⚑ Экспедиционный режим