ok here's what I tried : I tried using a local script that connects to a part and when it is touched, it changes the music. The problem with this is that it changes the music for everyone, not just the person that touches it.
✓ ANSWER ACCEPTED
How do I make music specific to location and so only the player in that location hears it?
1 answer
✓ Accepted answer
Try placing the sound into their head. Put the following script in a regular script, and read the 2 comments at the top of the script.
sounds = {} -- Don't touch this, it'll generate itself.
-- Create a new model in Lighting called 'Sounds' and put all your sounds in there.
function generateSoundsTbl()
for _, child in pairs(game.Lighting.Sounds) do
table.insert(sounds, child.Name)
end
end
function getNextSound(prevSound)
local nextSound
for key, value in pairs(sounds) do
if(value == prevSound) then
if(key < #sounds) then
nextSound = sounds[key + 1]
else
nextSound = sounds[1]
end
end
end
return nextSound
end
function removeSounds(parent)
local oldSound
for _, child in pairs(parent:GetChildren()) do
if(child:IsA("Sound")) then
oldSound = child.Name
child:Destroy()
end
end
return oldSound
end
debounce = false
script.Parent.Touched:connect(function(hit)
humanoid = hit.Parent:findFirstChild("Humanoid")
if(debounce == false) then
debounce = true
if(humanoid ~= nil) then
oldSound = removeSounds(hit.Parent.Head)
nextSound = getNextSound(oldSound)
sound = game.Lighting.Sounds:findFirstChild(nextSound)
if(sound ~= nil) then
sound:clone().Parent = hit.Parent.Head
end
end
wait(0.2)
debounce = false
end
end)
generateSoundsTbl()
This discussion is preserved as it was. New answers, comments, and votes are closed.
