Вызов ивента с задержкой. Как сделать?
У меня есть скрипт для того, чтоб когда я касался куба у него отнималось ХП
local cube = workspace.Cube
local HP = cube.Healthbar
local function Healtbar() do
HP.Value = HP.Value - 5
end
cube.Touched:Connect(Healthbar)
Но ХП отнимается слишком быстро, буквально каждый фрейм когда я сталкиваюсь с кубом, а я хотел бы, чтоб после получения урона происходила небольшая пауза, после чего урон снова проходил, но простое wait() - не работает.
Ответы (2 шт):
Автор решения: Александр Пушкин
→ Ссылка
local cube = workspace.Cube
local HP = cube.Healthbar
local delay = 1
local waiting = false
local function Healtbar() do
if waiting == false then
HP.Value = HP.Value - 5
waiting = true
wait(delay)
waiting = false
end
end
cube.Touched:Connect(Healthbar)
Автор решения: Егор
→ Ссылка
local cube = workspace.Cube
local HP = cube.Healthbar
local lock = false
local function Healtbar() do
if not lock then
lock = true
HP.Value = HP.Value - 5
task.wait(--[[тут время ожидания]])
lock = false
end
end
cube.Touched:Connect(Healthbar)
Смысл в том, что Touched действительно запускается каждый кадр.
Тут просто проверяется, закончила ли выполнение прошлая функция, если нет, то ничего не происходит.