Touched and TouchEnded

On Touch event

by uhi_o

Author Avatar

On touch event is often used. I will teach you guys how it works. There is another way to do it but i prefer this short and simple method.

Add 2 parts in your game. One button and another bridge for the player to pass ontop. Make sure the button is not touching anything or else it will activate the Touched event.

local part = script.Parent
local part2 = game.Workspace.SecondPart

Now we start the Touched events.


button.Touched:Connect(function()
    print("Button has been touched.")
end

If you do not like using this method then there is another way.


yourPart = script.Parent

function onTouch()
    print("A player has touched the button")
end

yourPart.Touched:Connect(onTouch) --Calls the function

When something touches the button it prints "Button has been touched." in the output. You may change the print to anything you would like it to do. Now for when the player is not touching it.

button.TouchEnded:Connect(function()
    print("Button has been disactivated")
end

When player is not touching the part anymore it de activates. Here is an example of what you can do with Touched events.

local button = script.Parent
local bridge = game.Workspace.Part

button.Touched:Connect(function()
    button.BrickColor = BrickColor.new("Bright Green")
    bridge.Transparency = 0
    bridge.CanCollide = true
end

button.TouchEnded:Connect(function()
    wait(5) -- Time before script starts (seconds)
    button.BrickColor = BrickColor.new("Really red")
    bridge.Transparency = 1
    bridge.CanCollide = false
end

What this script does is. When a player touches the button it becomes red and the bridge comes. Then when nothing is touching it, it waits 5 seconds and it runs the script after it.

Checking if character touched and the hit parameter

If you wanted to check if a character touched this part then you would do an if statement checking if the part's parent has a child named Humanoid in it. Which every character in Roblox has.

local Part = script.Parent --Part directory

Part.Touched:Connect(function(hit) --hit parameter
    if hit.Parent:FindFirstChild("Humanoid") then --If humanoid is found
        print("Character Found: "..hit.Parent.Name)
    end
end)

So basically hit is the object that touched the part that you assigned the event to. While on the 4th line we are checking if the Humanoid exists. FindFirstChild either returns a bool or in some cases the object found. Then on the 5th line I am printing "Character Found:" with the player's name concatenated to it and that would print "Character Found: uhi_o" (if it were me of course).

Disconnecting an event

Disconnecting an event is used when you won't be needing the event anymore and just disconnect it. I'm not too sure of a case you would need this but I'll try my best to explain it.

local part = script.Parent

local Event = part.Touched:Connect(function(hit)

    if hit.Parent:FindFIrstChild("Humanoid") then
        hit.Parent.Humanoid:TakeDamage(10) --Damaging character touched
        Event:Disonnect() --Ending this whole touched event
    end

end)

In this example, we first define the local variable “connection” so that it can be used inside the function onTouched. We set the connection variable to be the value returned from Connect (the returned connection object). The onTouched function will print the object that touched the part, then immediately disconnect the function from the event by calling Disconnect on the connection object. This prevents future touches from calling onTouched -Developer roblox

In other words we define the variable of the event then we disconnect it whenever needed.

Thanks for reading! Hope you learnt something! -uhi_o