Блог школы Роблоппа — Роблокс Студио, обучение, познавательные статьи и новости школы

Как создать анимацию с TweenService в Roblox Studio

2025-07-05 15:45 Туториалы
Анимации делают игру живой. Ты можешь плавно открывать двери, поднимать платформы, двигать объекты, увеличивать кнопки при наведении и многое другое — всё это с помощью специального сервиса под названием TweenService. В этой статье мы пошагово разберём, как его использовать.

Что такое TweenService?

TweenService — это инструмент Роблокс Студио, который позволяет плавно изменять свойства объектов, такие как позиция, размер, прозрачность, цвет и т.д. Вместо резкого изменения, как это делает .Position = новое_значение, твины изменяют значение постепенно — как анимация.

Пример: как плавно поднять платформу

1. Подготовь объект

Создай обычный Part в Workspace и назови его Platform. Убедись, что он Anchored = true (иначе он будет падать вниз).

2. Добавь скрипт

Вставь в Platform обычный Script и добавь следующий код:
local TweenService = game:GetService("TweenService")
local platform = script.Parent

local goal = {}
goal.Position = platform.Position + Vector3.new(0, 10, 0) -- поднимаем на 10 единиц вверх

local tweenInfo = TweenInfo.new(
2, -- время в секундах
Enum.EasingStyle.Sine, -- стиль движения (можно выбрать другой)
Enum.EasingDirection.Out, -- направление анимации
0, -- сколько раз повторить (0 — один раз)
false, -- повторять взад-вперёд
0 -- задержка перед стартом
)

local tween = TweenService:Create(platform, tweenInfo, goal)
tween:Play()
Когда ты запустишь игру, Platform плавно поднимется вверх на 10 единиц за 2 секунды.

Что можно анимировать?

С помощью TweenService можно изменять почти любые числовые и цветовые свойства, например:
  • Transparency — прозрачность объекта
  • Size — размер
  • Color — цвет (у Part)
  • CFrame — положение и поворот
  • UI-элементы: размер, позицию, цвет кнопок и рамок

Часто используемые параметры TweenInfo:

  • time — длительность
  • EasingStyle — стиль (например, Linear, Bounce, Sine)
  • EasingDirection — направление (In, Out, InOut)
  • repeatCount — сколько раз повторить
  • reverses — должен ли твин идти обратно
  • delayTime — задержка

Полезные примеры:

Сделать кнопку, которая увеличивается при наведении:

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

button.MouseEnter:Connect(function()
local tween = TweenService:Create(button, TweenInfo.new(0.3), {Size = UDim2.new(0, 220, 0, 60)})
tween:Play()
end)

button.MouseLeave:Connect(function()
local tween = TweenService:Create(button, TweenInfo.new(0.3), {Size = UDim2.new(0, 200, 0, 50)})
tween:Play()
end)

Сделать мигающий объект:

while true do
local tween1 = TweenService:Create(script.Parent, TweenInfo.new(0.5), {Transparency = 1})
tween1:Play()
tween1.Completed:Wait()
local tween2 = TweenService:Create(script.Parent, TweenInfo.new(0.5), {Transparency = 0})
tween2:Play()
tween2.Completed:Wait()
end

Полезные ссылки:

Если ты хочешь научиться делать целые анимации интерфейса, NPC или шипов, которые вылетают из пола — TweenService подойдёт идеально. Он работает быстро, просто и красиво.