Roblox · Дополнительное

Исчезающие платформы

Ряд платформ над пропастью: наступил — платформа тает за секунду и пропадает, через 3 секунды возвращается. Один скрипт обслуживает все платформы в папке.

Структура

Синим — что нужно создать.

Workspace
└─ Disappearing (Folder)
   ├─ Step1, Step2, … (Part) — Anchored; имена любые
   └─ DisappearingServer (Script)

Шаги

  1. Workspace → «+» → Folder, переименуй в Disappearing.
  2. В Disappearing: «+» → Part. Size — 5, 1, 5; Anchored — вкл.; светлый цвет. Скопируй (Ctrl+D) и расставь цепочкой над пропастью с промежутками, через которые нужно прыгать.
  3. В Disappearing: «+» → Script, переименуй в DisappearingServer, вставь текст из «Скриптов».
  4. Как работает: скрипт перебирает все парты в папке и каждому вешает касание. Коснулся персонаж — TweenService плавно делает парт прозрачным, потом CanCollide выключается, через GONE_TIME всё возвращается.
  5. Скорость — числа в начале скрипта: FADE_TIME (сколько тает), GONE_TIME (сколько нет). Сложнее — FADE_TIME 0.4.
  6. Новая платформа — просто положи парт в папку Disappearing до запуска игры.

Скрипты

DisappearingServer

Где: Workspace → Disappearing · Script
Зачем: Каждая платформа в папке тает после касания и возвращается.

-- папка с исчезающими платформами
local folder = script.Parent
-- плавные изменения
local TweenService = game:GetService("TweenService")
-- секунд тает после касания
local FADE_TIME = 1
-- секунд её нет
local GONE_TIME = 3

-- включает одну платформу
local function Setup(part)
    -- уже исчезает?
    local busy = false
    -- исходная прозрачность
    local startTransparency = part.Transparency
    -- на платформу что-то наступило
    part.Touched:Connect(function(otherPart)
        -- уже исчезает
        if busy then return end
        -- модель, которой принадлежит деталь
        local model = otherPart:FindFirstAncestorOfClass("Model")
        -- реагируем только на персонажей
        if not (model and model:FindFirstChildOfClass("Humanoid")) then return end
        -- начали
        busy = true
        -- плавно в прозрачность
        local fade = TweenService:Create(part, TweenInfo.new(FADE_TIME), {Transparency = 1})
        -- тает
        fade:Play()
        -- растаяла
        fade.Completed:Wait()
        -- проваливаемся
        part.CanCollide = false
        -- её нет GONE_TIME секунд
        task.wait(GONE_TIME)
        -- вернулась
        part.Transparency = startTransparency
        -- снова твёрдая
        part.CanCollide = true
        -- готова снова
        busy = false
    -- конец обработчика
    end)
-- конец функции
end

-- всё в папке
for _, part in pairs(folder:GetChildren()) do
    -- только парты, сам скрипт пропускаем
    if part:IsA("BasePart") then
        -- включаем
        Setup(part)
    -- конец проверки
    end
-- конец перебора
end

Проверка

Запусти Play (или Run) и убедись:

Собрать исчезающие платформы одной командой