Анимация в Роблокс Студио: как оживить персонажа и предметы

Без рубрики5 минут чтения

Игра, в которой всё стоит на месте, быстро надоедает. Анимация оживляет её: персонаж машет рукой и танцует, платформы ездят, двери плавно открываются, монетки крутятся. В Roblox Studio есть два способа сделать движение, и оба по силам школьнику:

  • Animation Editor — анимация персонажей: позы, жесты, танцы, удары;
  • TweenService — анимация предметов из скрипта: движение, поворот, изменение цвета и размера.

Разберём оба.

Часть 1. Анимация персонажа в Animation Editor

Шаг 1. Добавьте риг

Анимировать в Roblox можно только риг — модель с «скелетом», у которой части тела соединены суставами. Готовый риг проще всего вставить из вкладки Avatar: там есть инструмент для создания рига (Rig Builder, в новых версиях — Rig Generator). Выберите тип тела — например, блочный риг R15, у него 15 подвижных частей.

Шаг 2. Откройте Animation Editor

На вкладке Avatar нажмите Animation Editor, затем кликните по ригу в сцене. Придумайте название анимации — внизу появится шкала времени.

Шаг 3. Расставьте ключевые кадры

Анимация в Roblox строится из ключевых кадров — поз, между которыми редактор сам достраивает плавное движение.

  1. Поставьте бегунок шкалы времени на начало.
  2. Выберите часть тела рига — например, правую руку.
  3. Поверните её (клавиша R переключает между перемещением и поворотом). На шкале появится ромбик — ключевой кадр.
  4. Передвиньте бегунок дальше, например на 0,5 секунды, и поверните руку в другое положение.
  5. Нажмите Play в редакторе — рука плавно двигается между позами.

Так, поза за позой, собирается любое движение. Для приветствия хватит трёх-четырёх ключевых кадров.

Шаг 4. Сделайте движение живее

  • Плавность. Нажмите правой кнопкой на ключевой кадр и выберите Easing Style: Linear — равномерно, Bounce — с отскоком, Elastic — с пружинкой.
  • Повтор. Кнопка Looping зацикливает анимацию — нужна для танцев, бега, покачивания. Чтобы цикл был без рывка, последний кадр должен совпадать с первым.
  • Приоритет. В меню ⋯ → Set Animation Priority выберите, насколько анимация «важна»: от Core (самая слабая) до Action (самая сильная). Если ваш танец перебивается стандартной ходьбой — поднимите приоритет до Action.

Шаг 5. Сохраните и опубликуйте

  1. ⋯ → Save — анимация сохранится в проекте.
  2. ⋯ → Publish to Roblox — придумайте название и нажмите Submit.
  3. Скопируйте ID анимации — длинное число. Оно нужно, чтобы запустить анимацию из скрипта.

Шаг 6. Запустите анимацию по кнопке

Сделаем так, чтобы персонаж игрока танцевал, когда нажимаешь клавишу E. Создайте LocalScript в папке StarterPlayer → StarterCharacterScripts и вставьте:

local UserInputService = 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://0000000000" -- сюда ваш ID

local track = animator:LoadAnimation(animation)

UserInputService.InputBegan:Connect(function(input, processed)
	if processed then
		return
	end
	if input.KeyCode == Enum.KeyCode.E then
		track:Play()
	end
end)

Замените нули на ID своей анимации. Важно, чтобы тип тела рига, на котором вы делали анимацию (R15 или R6), совпадал с типом персонажей в игре.

Часть 2. Анимация предметов через TweenService

Для предметов Animation Editor не нужен — их двигают скриптом через сервис TweenService. «Твин» — это плавный переход свойства объекта из одного значения в другое: положения, поворота, цвета, прозрачности, размера.

Движущаяся платформа

Классика обби — платформа, которая ездит вверх-вниз. Деталь (Anchored включён!) и скрипт внутри:

local TweenService = game:GetService("TweenService")
local platform = script.Parent

local info = TweenInfo.new(
	2,                         -- время в секундах
	Enum.EasingStyle.Sine,     -- плавный разгон и торможение
	Enum.EasingDirection.InOut,
	-1,                        -- повторять бесконечно
	true                       -- возвращаться обратно
)

local goal = {Position = platform.Position + Vector3.new(0, 10, 0)}

local tween = TweenService:Create(platform, info, goal)
tween:Play()

Платформа поднимается на 10 единиц за 2 секунды и возвращается обратно — бесконечно. Поменяйте Vector3.new(0, 10, 0) на Vector3.new(15, 0, 0) — и платформа будет ездить в сторону.

Крутящаяся монетка

local TweenService = game:GetService("TweenService")
local coin = script.Parent

local info = TweenInfo.new(2, Enum.EasingStyle.Linear, Enum.EasingDirection.In, -1)
local goal = {Orientation = coin.Orientation + Vector3.new(0, 360, 0)}

TweenService:Create(coin, info, goal):Play()

Монетка делает полный оборот за 2 секунды и крутится без остановки. Как сделать так, чтобы её можно было собрать, — в статье «Скрипты в Роблокс Студио: первые программы на Lua».

Плавная дверь

Если двери из той статьи просто исчезают, с твином они могут уезжать вверх:

local TweenService = game:GetService("TweenService")
local door = script.Parent

local closed = door.Position
local opened = closed + Vector3.new(0, door.Size.Y, 0)
local info = TweenInfo.new(1)

local click = Instance.new("ClickDetector")
click.Parent = door

click.MouseClick:Connect(function()
	TweenService:Create(door, info, {Position = opened}):Play()
	task.wait(3)
	TweenService:Create(door, info, {Position = closed}):Play()
end)

Почему анимация не работает

  • Анимация персонажа не проигрывается. Проверьте ID и что анимация опубликована от того же владельца, что и игра: если игра принадлежит группе, анимацию тоже нужно публиковать в группу.
  • Анимацию перебивает ходьба. Поднимите приоритет до Action.
  • Персонаж «ломается». Анимацию делали на R6, а в игре R15 (или наоборот).
  • Платформа падает или улетает. У детали не включён Anchored.
  • Игрок соскальзывает с движущейся платформы. Делайте платформу пошире и не слишком быструю — так играть приятнее.

Что дальше

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

  1. Роблокс Студио: где скачать на ПК и есть ли на телефон
  2. Как сделать свою игру в Роблокс Студио: пошаговый гайд
  3. Скрипты в Роблокс Студио: первые программы на Lua

На курсе «Разработка игровых приложений в Roblox» в РОБОЛАТОРИИ ребята 10–14 лет делают паркур, тайкун и симулятор, а в финале — собственную игру, в которую можно позвать друзей. Вопросы — по телефону 8 (495) 120-30-60.

Комментарии

Онлайн-курсы для детей 7–16 лет

Программирование, робототехника и 3D с живым преподавателем. Первое занятие — пробное.

Выбрать курс