I'm trying to make a model fade with a "flicker-ish" effect by randomly iterating through each part of the model, then adding transparency, and repeating this process until ALL children of the model are transparent.
The script I have is kindof working. The problem I'm running into is that from time-to-time, not ALL of the parts in the model are made transparent, but the script ends anyways. So sometimes there will be 1, 2, 3, 4 or more parts that are still kinda visible although the function is finished. Why is this happening?
I've included the function below. If I can clarify anything further, please let me know.
Variables to know:
Fields
= a table of parts in the model
randHit
= a local table that I use to cross-check what parts have been fully modified or not (this step might be unnecessary, I use this check to eliminate further transparency checks since I know the part is already fully transparent)
hit
= a local bool that I set to true IF the part being checked is already inside of randHit
allTrans
= a bool that I use to fully check if ALL parts of the model are transparent. Is set to true each time the loop activates and then is set to false ANY time one of the parts isn't transparent enough. Loop only finishes if allTrans
is still true by the end
function onFunction() repeat wait(0) allTrans = true local numHit = 0 local randHit = {} local hit = false repeat hit = false local inc = math.random(1,#Fields) for i, v in pairs (randHit)do -- this loop might be unnecessary if Fields[inc] == v then hit = true end end if not hit then if Fields[inc].Transparency > transAmt then Fields[inc].Transparency = Fields[inc].Transparency - .2 allTrans = false else table.insert(randHit,Fields[inc]) end end numHit = numHit + 1 until numHit == (#Fields) --[[ for i, v in pairs(Fields) do wait(0) allTrans = true if v.Transparency > transAmt then allTrans = false v.Transparency = v.Transparency - .3 end end]] until allTrans == true for _,v in pairs(script.Parent.buttons:GetChildren()) do if v:IsA("BasePart") then v.BrickColor = BrickColor.new("Lime green") end end on = true debounce = false end