Sound and feel - Newly guides

Take an obby that works and make it feel good: a sound on every event, a squash when you land, a flash when you touch a checkpoint.

Feel

Two games can have the same rules and feel completely different. The difference is feedback: what the game does the instant something happens. Three kinds: sound, motion, colour. You'll add all three to Prism Peak.

1. Sound

Select a checkpoint pad. Add a Sound to it (Add → Sound) and pick a clip in Properties (ding is good). Then in the pad's script, where the checkpoint is handled:

```luau
local ding = pad:FindFirstChild("Sound")
-- inside the Touched handler, after the checkpoint is set:
if ding then ding:Play() end
```

Do the same for a hazard (oops) and the finish (win).

2. Motion

A tween moves a property from where it is to a goal over time. Make the pad bump when touched:

local up = TweenService:Create(pad, TweenInfo.new(0.12), { Position = pad.Position + Vector3.new(0, 0.6, 0) })
local down = TweenService:Create(pad, TweenInfo.new(0.2), { Position = pad.Position })

-- inside the Touched handler:
up:Play()
task.wait(0.12)
down:Play()

3. Colour

Flash the hazard when it gets you:

```luau
local normal = bar.Color
local flash = TweenService:Create(bar, TweenInfo.new(0.1), { Color = Color3.fromHex("#ffffff") })
local back = TweenService:Create(bar, TweenInfo.new(0.3), { Color = normal })
-- inside the hazard's Touched handler:
flash:Play()
task.wait(0.1)
back:Play()
```

4. Compare

Play your obby. Then play the untouched template (New game → Rainbow Obby). Write one sentence: what does a player know sooner in yours?

Done when

Open on Newly