Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Why won't this brick play this sound effect?

I made a model, with a working speed boost script. I added a sound, and a script under it in the model. The script says..

function onTouch()
	script.Parent:Play()
end
game.Workspace.Model:connect(onTouch)

Why won't the sound effect work? (If it helps to know, I added background music to my game as well. I want this speed boost brick to play this sound when a player touches it)...

1 answer

✓ Accepted answer

Your problem is that you're trying to use the Touched event with a model. This event is only supported for individual parts. No problem though, we can easily fix this to work with an entire model still.


Here's a little edit to your script that connects the event to every single part in the model:

function onTouch()
	if not script.Parent.IsPlaying then --Checks if it's already playing or not
		script.Parent:Play()
	end
end

for i,v in pairs(game.Workspace.Model:GetChildren()) do --Iterates over every child in the model
	if v:IsA("BasePart") then --Checks if the child is a part
		v.Touched:connect(onTouch) --Connects the event
	end
end

I also fixed your connection. You need to include the event which is Touched , or else you're not connecting the function to anything properly.

Part:connect(onTouch) --This is what yours would have looked like.
Part.Touched:connect(onTouch) --Needs to be set up like this.

And there you go. It's as simple as that. If you have any further problems/questions, please leave a comment below, and I'll see what I can do. Hope I helped :P

This discussion is preserved as it was. New answers, comments, and votes are closed.