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