0
votes

I've made a game where you step on a specific tile this part gets destroyed. I want to make it that after a certain amount of time this destroyed block will reappear, now you might wonder why I just don't make the part invisible and make it lose it's player collision. I have not done this because I don't know how to make the Texture on top of the part transparency 1.

1
Please provide a minimal reproducible example. You need to show at least some code or screenshots of what you're working on. - Yserbius

1 Answers

0
votes

You could make a copy of the part, then do the destruction, and put the copy back into its place after a few seconds:

function onTouched(hit)
    -- see if it was a player that touched the part
    local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
    if (plr == nil) then return end

    -- make backup of the part and its parent
    local part = workspace.Part
    local backup = part:Clone()
    local backupParent = part.Parent    

    part:Destroy() -- do some cool effect for the destruction of it...

    spawn(function()
        wait(5)
        -- put part back in place
        backup.Parent = backupParent
        backup.Touched:Connect(onTouched)
    end)
end

workspace.Part.Touched:Connect(onTouched)

If you just want it to disappear you could also just remove it from the object tree temporarily by setting its Parent to nil:

function onTouched(hit)
    local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
    if (plr == nil) then return end

    local part = workspace.Part

    local backupParent = part.Parent    
    part.Parent = nil

    spawn(function()
        wait(5)
        part.Parent = backupParent
    end)
end