Проблема, описанная Даниилом, заключается в том, что при касании двери (или объекта) она начинает многократно открываться и закрываться. Это происходит из-за того, что каждый раз, когда дверь касается игрока, событие Touched активируется.
Чтобы решить эту проблему, можно ввести переменную-флаг, которая будет отслеживать, открыта ли дверь в данный момент или закрыта. Если дверь уже открыта, то дополнительные касания не будут вызывать повторное открытие.
Вот пример того, как это можно реализовать:
local closed = script.Parent
local open = lava.Part
local doorIsOpen = false -- флаг состояния двери
local function toggleDoor(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
if doorIsOpen then
-- Закрыть дверь
lava.Transparency = 0
lava.CanCollide = true
open.Transparency = 1
open.CanCollide = false
doorIsOpen = false
else
-- Открыть дверь
lava.Transparency = 1
lava.CanCollide = false
open.Transparency = 0
open.CanCollide = true
wait(3)
doorIsOpen = true
end
end
end
closed.Touched:Connect(toggleDoor)
Теперь, когда игрок касается двери, функция toggleDoor проверяет, открыта ли дверь. Если дверь открыта, она закрывается, и наоборот. Это предотвратит многократное открытие и закрытие двери при касании.
local closed = script.Parent
local open = lava.Part
local function open(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
lava.Transparency = 1
lava.CanCollide = false
open.Transparency = 0
open.CanCollide = true
wait(3)
lava.CanCollide = true
lava.Transparency = 0
open.Transparency = 1
open.CanCollide = false
end
end
closed.Touched:Connect(open)
И вот, проблема. Если стоять в месте открытой двери то она начнет бешено открываться и закрываться. Как это исправить?