I rephrased my question.


--This is a working script.

fade = script.Parent
fadeGoal = 0
fadeRate = 0.05

function updateFade()
	local current = fade.BackgroundTransparency
	if current < fadeGoal then
		fade.BackgroundTransparency = math.min(fadeGoal,current+fadeRate)
	elseif current > fadeGoal then
		fade.BackgroundTransparency = math.max(fadeGoal,current-fadeRate)
	else
		fade.BackgroundTransparency = fadeGoal
	end
end

Now here's my own script by which doesn't work and need help with,

lif hit.Parent:FindFirstChild("Humanoid") ~= nil then

		if game.Players:FindFirstChild(hit.Parent.Name) ~= nil then
		local player = game.Players:FindFirstChild(hit.Parent.Name)

			if player:FindFirstChild("PlayerGui"):FindFirstChild("ScreenGui") == nil then
			sg = Instance.new("ScreenGui")
			sg.Parent = player:FindFirstChild("PlayerGui")
			end

		if player.PlayerGui.ScreenGui:FindFirstChild("MessageBox") == nil then
local ChangeRate = 0.01
local ChangeGoal = 0

		local f = Instance.new("Frame")
		f.Name = "WhiteFrame"
		f.Position = UDim2.new(0, 0, 0, 0)
		f.Size = UDim2.new(1,0, 1,0)								
		f.Parent = player.PlayerGui:FindFirstChild("ScreenGui")
        f.BackgroundTransparency = 1
        f.BackgroundColor3 = Color3.fromRGB(255,255,255)
        






wait(1)
f.BackgroundTransparency = math.max(0,f.BackgroundTransparency-0.01)
 end


------------------------------------------
wait(10)
		
		f:Destroy()
				end
		end
	end

        
script.Parent.Touched:connect(onTouch)