You have the right idea, but, there are a few problems with your code;
You are not using the Variable bump within the Function anywhere in the chunk.
You are not calling the function anywhere in the code; There isn't an event line.
You are attempting to revert the Cloned ScreenGui's to a Child that is not, or, that may be not existant.
Let me explain functions;
Functions are a type of code in the .lua language where you are able to run a chunk of code multiple times [May not have explained it that well. :c ], get the result of something, or to perform some special task that you are not able to do with a normal chunk, or, as I should say, perform a specific task; For example, how Anti-Viruses work [ROBLOX Anti Viruses]; Anti-Viruses call the function on a Child, then will call a For to loop through the currently Children within the Parent, but, however, while it is looping, the loop calls the function on each Child that is being looped through after checking if the object is clean, or not.
I know, my explanations are really bad. ;c
From the looks of your code, your trying to make it clone something into a Player's PlayerGui; The PlayerGui Child of the Player replicates, or, to dumb it down a notch, display GUIs, such as ScreenGui's, TextLabel's, TextButton's, and TextBox's to the specific Player, but, sadly, there is no such thing as a StarterGui Child within the Player, I think you might have mistaken-ed the StarterGui Service as the Player's PlayerGui, a common mistake I see here a lot. :P
According to the Roblox WIKI; The StarterGui Service only Clones, then reverts the Cloned Children into the Player's PlayerGui.
Lastly, what is the Point of line 1?; You are trying to create a function where you have to Touch a specific BasePart to fire the Event/Function, but, yet, you have set up the Function to Clone the ScreenGui, then to revert the Cloned ScreenGui's Parent property to the Player's PlayerGui? Unless you meant to call it later on, perhaps?
You may be wondering currently, What does he mean by calling a function? Well, just like how I said it. To call a function, you call the function by it's function Name. To simply call it's name, just type as next; func(). Now, let me show you an example of what I mean;
function func()
return "I'm a string!"
end
local func = func()
print(func)
The impression I am getting from your code, you are trying to do here, but, you have made a few mistakes in your function. Now that we have all this done, let's rewrite the code! And sorry that we have to rewrite it, it may get confusing with the code in the future as it currently stands;
local Player = game.Players.LocalPlayer
function GUI()
local Gui = script:FindFirstChild("ScreenGui")
if Gui then
Gui = Gui:Clone()
Gui.Parent = Player.PlayerGui
end
end
GUI()
Sorry if my Answer/Explanations wasn't understandable. :(
Hope this helped!