Events are used to implement necessary functions for various situations that occur within the game (such as entering, collisions, etc.).
Linking a Function to an Event
Use :Connect() to link a function to an event.
local Part = script.Parent
local function OnTouched(otherPart)
print("otherPart : ", otherPart.Name)
end
Part.Touched:Connect(OnTouched)
Unlinking a Function from an Event
If you store the returned value in a variable when you use :Connect() to link a function to an event, you can unlink the function from the event when it is no longer needed.
local Part = script.Parent
local Connection = nil
local function OnTouched(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
if Connection ~= nil then
Connection:Disconnect()
end
end
end
Connection = Part.Touched:Connect(OnTouched)
Commonly Used Events
Collision Events
Detects objects that collide with an object to which the event is linked.
(For example: Detecting characters that touch a Kill Part)
local Part = script.Parent
local Connection = nil
local function OnTouched(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
if Connection ~= nil then
Connection:Disconnect()
end
end
end
Connection = Part.Touched:Connect(OnTouched)
Detects objects that exit the area (collision range) of the object to which the event is linked.
(For example: Escaping from a trap floor)
local function OnTouchEnded(otherPart)
print("TouchEnded : ", otherPart.Name)
end
part.TouchEnded:Connect(OnTouchEnded)
Update Events
An event that is called every frame.
(For example: Timer calculations, object movement, physics operations)
local RunService = game:GetService("RunService")
local Timer = 0
local function UpdateEvent(deltaTime)
Timer = Timer + deltaTime
if Timer >= 3 then
Timer = 0
print("Reset!)
end
end
RunService.Heartbeat:Connect(UpdateEvent)
Player Join/Leave Events
An event that detects players who join the game.
local Players = game:GetService("Players")
local function EnterPlayer(player)
print("EnterPlayer : ", player.Name)
end
Players.PlayerAdded:Connect(EnterPlayer)
An event that detects players who leave the game.
local Players = game:GetService("Players")
local function LeavePlayer(player)
print("LeavePlayer : ", player.Name)
end
Players.PlayerRemoving:Connect(LeavePlayer)
Character Spawn/Death Events
These are events that detect when a character is spawned or when a character dies.
local Players = game:GetService("Players")
local function EnterPlayer(player)
-- Spawn
local function SpawnCharacter(character)
local humanoid = character:WaitForChild("Humanoid")
-- Die
local function DeathCharacter()
print(player.Name, "Die!")
end
humanoid.Died:Connect(DeathCharacter)
end
player.CharacterAdded:Connect(SpawnCharacter)
end
Players.PlayerAdded:Connect(EnterPlayer)
Button Click Events
An event that is triggered when a button is clicked.
local ScreenGui = script.Parent
local Button = ScreenGui.TextButton
local function OnActivated()
print("Activated")
end
Button.Activated:Connect(OnActivated)