Хотите, чтобы дверь в вашей игре открывалась сама при приближении игрока? В этом уроке покажу, как создать такую систему с помощью скрипта и TweenService. Это отличный способ добавить интерактивности и реалистичности в вашу игру!
🔧 Что понадобится:
- Один Part — это и будет ваша дверь
- Внутри него — обычный Script
🧠 Скрипт для автоматического открытия:
local door = script.Parent
local openPosition = door.Position + Vector3.new(0, 0, -5)
local closePosition = door.Position
local openDistance = 10
local tweenService = game:GetService("TweenService")
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Sine, Enum.EasingDirection.Out)
local openTween = tweenService:Create(door, tweenInfo, {Position = openPosition})
local closeTween = tweenService:Create(door, tweenInfo, {Position = closePosition})
game:GetService("RunService").Heartbeat:Connect(function()
for _, player in pairs(game.Players:GetPlayers()) do
local char = player.Character
if char and char:FindFirstChild("HumanoidRootPart") then
local distance = (char.HumanoidRootPart.Position - door.Position).Magnitude
if distance < openDistance then
openTween:Play()
else
closeTween:Play()
end
end
end
end)
local openPosition = door.Position + Vector3.new(0, 0, -5)
local closePosition = door.Position
local openDistance = 10
local tweenService = game:GetService("TweenService")
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Sine, Enum.EasingDirection.Out)
local openTween = tweenService:Create(door, tweenInfo, {Position = openPosition})
local closeTween = tweenService:Create(door, tweenInfo, {Position = closePosition})
game:GetService("RunService").Heartbeat:Connect(function()
for _, player in pairs(game.Players:GetPlayers()) do
local char = player.Character
if char and char:FindFirstChild("HumanoidRootPart") then
local distance = (char.HumanoidRootPart.Position - door.Position).Magnitude
if distance < openDistance then
openTween:Play()
else
closeTween:Play()
end
end
end
end)
⚙️ Как это устроено:
- Скрипт проверяет расстояние между дверью и каждым игроком.
- Если игрок подходит ближе, чем на 10 студийных единиц — срабатывает анимация открытия.
- Если игрок отходит — запускается обратная анимация, и дверь закрывается.
- Движение реализовано через TweenService, что делает его плавным и красивым.
💡 Как улучшить:
- Добавьте звуковой эффект при открытии и закрытии двери.
- Измените направление движения, чтобы дверь открывалась вбок.
- Используйте RemoteEvent, если хотите оптимизировать скрипт под сетевую игру.
🔍 Больше интересных уроков и скриптов ищи на нашем youtube-канале Robloppa Studio — обучаем детей созданию игр на практике!
📢 Или присоединяйся к нашему Telegram-каналу: t.me/robloppo