Skip to content
Lighting and Environment Settings
Roblox

Lighting and Environment Settings

Learn Roblox scripting with examples for doors, buttons, and teleporters. Master basic Lua to add interactivity to your games.

By ···10 min read·Multi-source verified
1 reading this guide  

Learn Roblox scripting with examples for doors, buttons, and teleporters. Master basic Lua to add interactivity to your games.

7.7. Basic Scripting Examples: Doors, Buttons, Teleporters

Scripting in Roblox allows you to add interactivity and dynamic behavior to your games. This section provides practical examples of how to create common game elements like functional doors, interactive buttons, and instant teleporters using Lua scripting in Roblox Studio. These examples are perfect for beginners looking to understand core scripting concepts.

Understanding how to script basic interactions is fundamental to game development. These examples demonstrate how to manipulate objects, respond to player input, and trigger events. By following along and experimenting, you'll gain hands-on experience with essential scripting techniques that can be applied to more complex game mechanics.

1. Creating a Simple Door that Opens and Closes

This script will make a door open when a player touches a part and close after a short delay.

Setup:

  1. Create a `Part` in Roblox Studio and name it 'Door'.
  2. Create another `Part` and name it 'OpenTrigger'. Position this part in front of the 'Door'.
  3. Insert a `Script` into the 'OpenTrigger' part.

Script (inside 'OpenTrigger'):


local door = script.Parent.Parent:WaitForChild("Door") -- Assumes Door is in the same parent as OpenTrigger
local openTrigger = script.Parent

local isOpen = false
local debounce = false -- Prevents rapid opening/closing

local function onTouch(otherPart)
 if debounce then return end

 local player = game.Players:GetPlayerFromCharacter(otherPart.Parent)
 if player and not isOpen then
 debounce = true
 isOpen = true
 
 -- Animate door opening (e.g., move it)
 door.Anchored = false -- Allow physics to move it
 door:TweenPosition(door.Position + Vector3.new(0, 5, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 1, true)
 
 -- Wait for a few seconds, then close
 wait(3)
 
 door:TweenPosition(door.Position - Vector3.new(0, 5, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 1, true)
 wait(1) -- Wait for closing animation to finish
 door.Anchored = true -- Anchor it again once closed
 isOpen = false
 debounce = false
 end
end

openTrigger.Touched:Connect(onTouch)

2. Creating an Interactive Button

This script makes a button change color when clicked and trigger a message.

Setup:

  1. Create a `Part` and name it 'Button'.
  2. Insert a `Script` into the 'Button' part.

Script (inside 'Button'):


local button = script.Parent
local originalColor = button.Color
local debounce = false

local function onClicked()
 if debounce then return end
 debounce = true

 -- Change color to green
 button.Color = Color3.fromRGB(0, 255, 0)
 print("Button was pressed!")

 -- Wait a moment, then revert color
 wait(1)
 button.Color = originalColor
 debounce = false
end

button.ClickDetector.MouseClick:Connect(onClicked)
-- add a ClickDetector object to the 'Button' part in Studio

3. Creating a Simple Teleporter

This script teleports a player to a different location when they touch a specific part.

Setup:

  1. Create two `Part` objects. Name the first one 'TeleporterPad1' and the second one 'TeleporterPad2'.
  2. Position 'TeleporterPad2' where you want players to be sent.
  3. Insert a `Script` into 'TeleporterPad1'.

Script (inside 'TeleporterPad1'):


local teleporterPad1 = script.Parent
local destinationPad = game.Workspace:WaitForChild("TeleporterPad2") -- Ensure the destination exists

local function onTouch(otherPart)
 local character = otherPart.Parent
 local humanoid = character:FindFirstChildOfClass("Humanoid")

 if humanoid then -- Check if it's a player character
 -- Teleport the character to the destination pad's position
 character:SetPrimaryPartCFrame(CFrame.new(destinationPad.Position + Vector3.new(0, 5, 0))) -- Add offset to avoid getting stuck
 end
end

teleporterPad1.Touched:Connect(onTouch)

These examples provide a solid foundation for understanding how to script basic interactions in Roblox. Remember to experiment, modify these scripts, and consult the Roblox Developer Hub for more advanced techniques!

100% Human-Written. AI Fact-Checked. Community Verified. Learn how AntMag verifies content