Анимации делают игру живой. Ты можешь плавно открывать двери, поднимать платформы, двигать объекты, увеличивать кнопки при наведении и многое другое — всё это с помощью специального сервиса под названием 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()
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)
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
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 подойдёт идеально. Он работает быстро, просто и красиво.