Skip to content
Basic Scripting Examples: Door, Light Switch
Roblox

Basic Scripting Examples: Door, Light Switch

Learn basic Roblox scripting: create a door that opens/closes with `Touched` events and a light switch that toggles a light using `ClickDetector`.

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

Learn basic Roblox scripting: create a door that opens/closes with `Touched` events and a light switch that toggles a light using `ClickDetector`.

Scripting in Roblox Lua is what brings your creations to life, adding interactivity and dynamic behavior. For beginners, understanding how to script simple interactions is a crucial first step. This section provides practical examples of creating a functional door that opens and closes, and a light switch that toggles a light on and off, using basic Lua scripting in Roblox Studio.

Example 1: A Simple Door Script

This script will make a `Part` named 'Door' open and close when a player touches it. We'll use `Touched` events and `TweenService` for smooth animation.

Setup:

  1. In Roblox Studio, insert a `Part` and name it `Door`.
  2. Make sure the `Door` part is not anchored if you want it to move realistically, or anchor it if you want it to slide on a fixed track. For this example, let's assume it's anchored and will slide upwards.
  3. Insert a `Script` inside the `Door` part.

Script:


local TweenService = game:GetService('TweenService')

local door = script.Parent
local isOpen = false
local originalCFrame = door.CFrame -- Store the door's starting position
local openCFrame = originalCFrame * CFrame.new(0, 10, 0) -- Define the position when open (10 studs up)

local tweenInfo = TweenInfo.new(
 1, -- Duration in seconds
 Enum.EasingStyle.Quad, -- Easing style
 Enum.EasingDirection.Out, -- Easing direction
 0, -- Repeat count
 false, -- Reverses
 0 -- Delay time
)

local openTween = TweenService:Create(door, tweenInfo, {CFrame = openCFrame})
local closeTween = TweenService:Create(door, tweenInfo, {CFrame = originalCFrame})

door.Touched:Connect(function(hit)
 local player = game.Players:GetPlayerFromCharacter(hit.Parent)
 if player then
 if not isOpen then
 openTween:Play()
 isOpen = true
 -- Optional: Close the door after a delay
 wait(3)
 closeTween:Play()
 isOpen = false
 end
 end
end)

Explanation:

  • We get `TweenService` for smooth animations.
  • `originalCFrame` stores the door's starting position.
  • `openCFrame` defines where the door will move to.
  • `TweenInfo` sets the animation's speed and style.
  • `openTween` and `closeTween` are created to animate the door.
  • The `Touched` event fires when something touches the door. If it's a player's character part, the door opens. After a delay, it closes.

Example 2: A Light Switch Script

This script will make a `Part` named 'LightSwitch' toggle a `Light` (another `Part`) on and off when clicked.

Setup:

  1. Insert two `Part`s. Name one `LightSwitch` and the other `Light`.
  2. Position them appropriately in your workspace.
  3. Make sure the `Light` part has its `Material` set to something like `Neon` so its color change is visible.
  4. Insert a `Script` inside the `LightSwitch` part.

Script:


local lightSwitch = script.Parent
local light = lightSwitch.Parent:FindFirstChild('Light') -- Find the Light part in the same parent as the switch

local isLightOn = false

local originalColor = lightSwitch.Color -- Store original color for visual feedback
local pressedColor = Color3.fromRGB(100, 100, 100) -- Color when pressed

lightSwitch.ClickDetector.MouseClick:Connect(function(player)
 if light then
 isLightOn = not isLightOn -- Toggle the state
 
 if isLightOn then
 light.Material = Enum.Material.Neon -- Turn light on
 light.Color = Color3.fromRGB(255, 255, 0) -- Yellow light
 lightSwitch.Color = pressedColor -- Visual feedback for switch
 else
 light.Material = Enum.Material.Plastic -- Turn light off
 light.Color = originalColor -- Revert to original color
 lightSwitch.Color = originalColor -- Revert switch color
 end
 end
end)

-- Add a ClickDetector to the LightSwitch part in the Properties window
-- Ensure the Light part exists in the workspace

Explanation:

  • We find the `Light` part in the same parent as the `LightSwitch`.
  • `isLightOn` tracks the current state of the light.
  • The `ClickDetector` inside the `LightSwitch` detects when a player clicks it.
  • When clicked, the `isLightOn` state is toggled.
  • Based on the state, the `Light` part's `Material` and `Color` are changed, and the `LightSwitch` provides visual feedback.

These examples demonstrate fundamental scripting concepts like event handling (`Touched`, `MouseClick`), variable manipulation, conditional statements (`if`), and using services like `TweenService`. They are excellent starting points for building more complex game mechanics.

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