Урок Roblox StudioЗанятие 1 / 8

TweenService для дверей

Создать плавное открытие

TweenService для дверей
Иллюстрация к теме занятия

Цель

Создать дверь, плавно открывающуюся по нажатию E

Подготовка

Workspace → Door (Part, Anchored=true), внутрь Door → ProximityPrompt и Script. Установи Door.Size=(6,9,1); Door.Position=(0,5,0).

Пошаговая работа

  1. Добавь дверь и ProximityPrompt. Установи ActionText «Открыть», HoldDuration 0.
  2. Вставь код в обычный Script внутри Door; он запоминает закрытую и открытую позиции.
  3. Запусти Play, подойди к двери и нажми E; дождись завершения Tween.
  4. Повтори нажатие — дверь вернётся. Проверь коллизию при закрытии.

Пример Luau

local TweenService = game:GetService("TweenService")
local door = script.Parent
local prompt = door:WaitForChild("ProximityPrompt")
local closed = door.CFrame
local opened = closed * CFrame.new(0, 9, 0)
local isOpen, busy = false, false
local info = TweenInfo.new(1.2, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
prompt.Triggered:Connect(function()
    if busy then return end
    busy = true
    prompt.Enabled = false
    local target = isOpen and closed or opened
    local tween = TweenService:Create(door, info, {CFrame = target})
    tween:Play()
    tween.Completed:Wait()
    isOpen = not isOpen
    door.CanCollide = not isOpen
    prompt.ActionText = isOpen and "Закрыть" or "Открыть"
    prompt.Enabled = true
    busy = false
end)

Проверка

В Play нажми E дважды, проверь ActionText и положение двери после каждой анимации.

Дверь поднимается за 1,2 секунды и опускается при повторном нажатии. Учебный пример предполагает, что пространство над дверью свободно.

Ошибка и ограничения

Если дверь дёргается, проверь Anchored и отсутствие второго скрипта, который меняет её CFrame. Не размещай дверь под низким потолком.

Усложнение

Сделай второй экземпляр с временем Tween 2 секунды и сравни ощущения.

Проверь пример в тестовой Roblox Studio перед публикацией. Используй отдельные копии проектов и соблюдай права на аудио и анимации.

Проверь свою работу

Перед тестом убедись, что ты выполнил практику самостоятельно.

Эти отметки — личная памятка, они не влияют на звёзды.

Проверь себя

Ответь на вопросы урока. Успешный тест даёт одну звезду в личном кабинете.

⭐ Проверь свои знания

5 вопросов по теме урока. За 4 правильных ответа получишь звезду. Повторные попытки разрешены.

1. Дверь должна переместиться плавно за 2 секунды. Какой сервис подходит?
2. Что означает TweenInfo.new(2) при создании анимации?
3. Дверь Anchored=true. Можно ли плавно переместить её через TweenService, меняя CFrame?
4. Игрок дважды быстро активировал дверь, и движения конфликтуют. Что поможет?
5. Почему изменение door.CFrame = targetCFrame само по себе не даёт плавного движения?