Цель
Создать дверь, плавно открывающуюся по нажатию E
Подготовка
Workspace → Door (Part, Anchored=true), внутрь Door → ProximityPrompt и Script. Установи Door.Size=(6,9,1); Door.Position=(0,5,0).
Пошаговая работа
- Добавь дверь и ProximityPrompt. Установи ActionText «Открыть», HoldDuration 0.
- Вставь код в обычный Script внутри Door; он запоминает закрытую и открытую позиции.
- Запусти Play, подойди к двери и нажми E; дождись завершения Tween.
- Повтори нажатие — дверь вернётся. Проверь коллизию при закрытии.
Пример 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 перед публикацией. Используй отдельные копии проектов и соблюдай права на аудио и анимации.
