Анимации персонажа: от редактора до запуска из скрипта
Как записать свою анимацию в Animation Editor, опубликовать её, проиграть по нажатию и не сломать при этом ходьбу. Плюс главное, о чём молчат уроки: приоритеты дорожек и почему чужие анимации не работают.
Средне 24 минуты 6 шагов проверен 42 дня назад
Что понадобится
Roblox Studio, персонаж на площадке (Rig Builder), базовое понимание LocalScript.
Текст гайда «Анимации персонажа: от редактора до запуска из скрипта»
Содержание
Анимация в Roblox — это не видео и не готовый эффект. Это записанная последовательность поз скелета, которую движок проигрывает поверх обычного движения персонажа. Отсюда все особенности: анимации складываются друг с другом, спорят за одни и те же кости и требуют явного указания, кто главнее.
Кому анимировать#
Анимируют не «персонажа», а риг — модель со скелетом. Готовый берётся во вкладке Avatar → Rig Builder. Там же выбирается тип: R6 (шесть частей, простой и старый) или R15 (пятнадцать частей, плавнее и умеет больше). Анимация, записанная для R6, на R15 работать не будет — это разные скелеты.
Тип рига задаётся в настройках игры
Какой скелет получат игроки, решает не риг на площадке, а настройка Game Settings → Avatar → Rig Type. Записал анимацию под R15, а в игре стоит R6 — персонаж просто ничего не сделает. Определись с типом до того, как начнёшь анимировать.
Animation Editor: как записывают позы#
Вкладка Avatar → Animation Editor, щёлкнуть по ригу, задать имя дорожки. Дальше работа идёт кадрами: ставишь ползунок на нужное время, поворачиваешь части тела — редактор сам записывает ключевой кадр.
- поставь ползунок в ноль и задай стартовую позу — даже если это обычная стойка
- сдвинь ползунок и сделай крайнюю позу движения: замах, приседание, поворот
- вернись и добавь промежуточные кадры там, где движение выглядит деревянным
- для зацикленных движений скопируй первый кадр в конец, иначе на стыке будет рывок
- включи
Loopedв меню дорожки, если анимация должна повторяться
Три кадра лучше тридцати
Движок сам достраивает движение между ключевыми кадрами. Новички ставят кадр на каждый шаг ползунка и получают дёрганую анимацию. Начни с трёх поз: начало, крайняя точка, возврат. Добавляй кадры только там, где глазом видно проблему.
Приоритет: почему анимация не видна#
Самая частая беда: анимация запускается, а персонаж продолжает бежать как ни в чём не бывало. Причина в приоритете — движок проигрывает несколько дорожек сразу, и побеждает та, у которой приоритет выше.
| Значение | Для чего |
|---|---|
Core | Служебные анимации платформы |
Idle | Стойка на месте |
Movement | Ходьба, бег, прыжок |
Action | Удар, взмах, использование предмета — то, что должно перебивать бег |
Action2 … Action4 | Когда нужно перебить даже другое действие |
Приоритет ставится в самом редакторе (меню дорожки → Set Animation Priority) и сохраняется вместе с анимацией. Правило простое: всё, что игрок делает нарочно, — это Action.
Публикация и id#
Готовую дорожку публикуют: меню редактора → Publish to Roblox. После этого у анимации появляется id, и его вставляют в свойство AnimationId объекта Animation.
Чужая анимация не проиграется
Анимация принадлежит тому, кто её опубликовал. Игра может использовать только анимации своего владельца — свои, если игра личная, или загруженные от имени группы, если игра принадлежит группе. Взял id из чужого урока — получишь неподвижного персонажа и ошибку в Output. Это защита, а не баг.
Запуск из скрипта#
Проигрывает анимацию объект Animator внутри Humanoid. Порядок всегда один: взять Animator, загрузить в него Animation, получить AnimationTrack, вызвать у дорожки Play().
local players = game:GetService("Players")
local userInput = game:GetService("UserInputService")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://0" -- сюда свой id после публикации
-- Дорожку загружают один раз и держат: LoadAnimation на каждое нажатие
-- плодит объекты и со временем начинает заметно подтормаживать.
local track = animator:LoadAnimation(animation)
track.Priority = Enum.AnimationPriority.Action
userInput.InputBegan:Connect(function(input, processed)
if processed then
return -- игрок печатает в чате, а не играет
end
if input.KeyCode == Enum.KeyCode.E and not track.IsPlaying then
track:Play()
end
end)Заменить стандартную ходьбу#
Чтобы поменять анимации бега и стойки для всех, не нужен свой скрипт с нуля. Внутри персонажа лежит Animate — обычный скрипт со списком стандартных id. Скопируй его в StarterPlayer → StarterCharacterScripts и подставь свои значения в нужные строки: walk, run, idle, jump.
Где искать Animate
Он появляется только у запущенной игры: нажми Play, найди в Explorer своего персонажа, скопируй оттуда Animate, останови тест и вставь в StarterCharacterScripts. В остановленном редакторе этого скрипта нет.
Что обычно идёт не так#
| Что видишь | Скорее всего |
|---|---|
| Ничего не происходит | Не тот владелец анимации или пустой AnimationId |
| Анимация проигрывается, но персонаж бежит поверх | Приоритет ниже Movement |
| Дёргается на стыке цикла | Первый и последний кадр не совпадают |
| Работает у автора, не работает у игроков | Анимация опубликована от личного аккаунта, а игра принадлежит группе |
| Со временем начинает тормозить | LoadAnimation вызывается при каждом нажатии |
Пошагово
6 шагов-
1
Поставь риг
Вкладка Avatar → Rig Builder → выбери тот же тип скелета, что стоит в настройках игры.
-
2
Запиши движение
Открой Animation Editor, щёлкни по ригу, задай имя. Поставь стартовую позу в нуле, крайнюю — дальше по времени, добавь один-два промежуточных кадра.
Начни с чего-то короткого: махнуть рукой, присесть, кивнуть.
-
3
Задай приоритет
Меню дорожки → Set Animation Priority →
Action, если анимация должна перебивать бег. -
4
Опубликуй
Меню редактора → Publish to Roblox. Скопируй полученный id: он понадобится в скрипте.
-
5
Запусти из скрипта
Положи LocalScript из гайда в StarterPlayer → StarterCharacterScripts и подставь свой id в
AnimationId. -
6
Проверь в игре
Нажми Play, побегай и нажми клавишу на бегу. Если анимация не перебивает движение — вернись к приоритету.

Обсуждение
Пиши по делу и без личных данных. Ссылки на сторонние сайты, обмен и «бесплатные робуксы» мы скрываем — почему.
Комментарии пишут те, кто вошёл — так спокойнее всем.
ВойтиПока никто ничего не написал. Будь первым.