Stage 9: Kinetic KillWall + ledges
Make sure the spinner is beatable and Stage 9 respawn works.
a hallway with a sliding wall and ledges
how an alternate route can make a hard obstacle feel clever
a moving-wall hallway with more than one way through
The big idea
Players like feeling smart. A sliding wall creates pressure. Ledges create a clever path around it.
- alternate route
- a second way through a challenge
- sliding wall
- a wall that moves back and forth
- ledge
- a small platform sticking out from a wall
Build it
Step 1 — Build the hallway
Build this partHallFloor
BlockOpen recipe
HallFloor
Block- Size
- 16 × 1 × 40
- Color
- Dark stone grey
- Material
- Concrete
- Anchored
- ✓ Yes
Build this partHallWall_Left
BlockOpen recipe
HallWall_Left
Block- Size
- 1 × 10 × 40
- Color
- Medium stone grey
- Material
- Concrete
- Anchored
- ✓ Yes
Build this partHallWall_Right
BlockOpen recipe
HallWall_Right
Block- Size
- 1 × 10 × 40
- Color
- Medium stone grey
- Material
- Concrete
- Anchored
- ✓ Yes
Step 2 — Add the sliding wall
Build this partSlidingWall
BlockOpen recipe
SlidingWall
Block- Size
- 10 × 10 × 2
- Color
- Really red
- Material
- Neon
- Anchored
- ✓ Yes
- Place
- Across the hallway
- Target
- WallTrackStart and WallTrackEnd
Build this partWallTrackStart
BlockOpen recipe
WallTrackStart
Block- Size
- 1 × 1 × 1
- Color
- Bright yellow
- Material
- Smooth Plastic
- Anchored
- ✓ Yes
- Place
- On one side of the hallway where the wall should start
Build this partWallTrackEnd
BlockOpen recipe
WallTrackEnd
Block- Size
- 1 × 1 × 1
- Color
- Bright yellow
- Material
- Smooth Plastic
- Anchored
- ✓ Yes
- Place
- On the other side of the hallway where the wall should slide
Make WallTrackStart and WallTrackEnd transparent if you want them hidden.
Insert this Script inside SlidingWall:
local RunService = game:GetService("RunService")
local wall = script.Parent
local startMarker = workspace:WaitForChild("WallTrackStart")
local endMarker = workspace:WaitForChild("WallTrackEnd")
local SLIDE_SPEED = 0.5
local t = 0
wall.Anchored = true
RunService.Heartbeat:Connect(function(dt)
t = t + dt * SLIDE_SPEED
local alpha = (math.sin(t * math.pi * 2) + 1) / 2
wall.Position = startMarker.Position:Lerp(endMarker.Position, alpha)
end)
wall.Touched:Connect(function(hit)
local humanoid = hit.Parent and hit.Parent:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = 0
end
end)
Step 3 — Add ledges
Add two small ledge parts:
Ledge_1onHallWall_Leftbefore the sliding wallLedge_2onHallWall_Rightafter the sliding wall
Make them wide enough to stand on. They are the clever route.
Step 4 — Add the Stage 10 checkpoint
Place the Stage 10 SpawnLocation after the hallway. Add StageNumber = 10 and the matching Team. Give this checkpoint the same settings as Stage 1 (check AllowTeamChangeOnTouch, uncheck Neutral, match the pad's TeamColor to its Team), and uncheck AutoAssignable on the new Team so players always start at Stage 1.
Understand it
The wall is pressure. The ledges are a plan. This is the same Heartbeat trick from Stage 8, but sliding instead of spinning: every frame the script reads WallTrackStart and WallTrackEnd and uses Lerp to place the wall somewhere between them, so the slide direction comes from the two markers. A Touched connection resets any player the wall slides into. Keeping the wall anchored means it cannot tip or drift, so the slide stays clean. This is a server-side world obstacle, so it does not need a client listener.
Try this
Try this
Three short experiments. Predict before you run, then test your guess.
If the ledges are too small, how will players feel?
Test the hallway with and without ledges. Which version is more fun?
Where else could you add a secret or clever alternate route?
Test your stage
- The hallway is clear.
- The sliding wall blocks the obvious route.
- Touching the wall resets the player.
- The ledges create a fair alternate route.
- Stage 10 checkpoint works.
If it breaks
- The ledges are too hard. Make them larger.
- The wall blocks everything. Move it so there is always a fair path.
- The wall does not slide. Check that
WallTrackStartandWallTrackEndare placed where you want and that the Script is insideSlidingWall. - The wall passes through me without resetting me. Confirm the
Touchedkill block is inside theSlidingWallScript. - The wall slides too fast or too slow. Tune
SLIDE_SPEED— smaller is slower. - The stage feels confusing. Add colored arrows or lights.
This is the same Heartbeat pattern from Stage 8, so most groups can type it after the spinner. If it is still too much for a younger group, build the wall as a coach-led demo and keep student focus on route design. The win is seeing that a moving wall can still have a fair answer.