The trouble still stands. I've been trying for the past month or so now to see if I can get sound bound to a key on a computer ie:
*If key = "V" game.Workspace.Sound:Play() end*
It does not only not work, but plays over a large distance. I've tried for over a month, and it covers the map when I only wanted a set distance, no-one's been a great help so far.
This script will add the sound to every user within a distance and then plays it. After 5 seconds the sound is again removed from each player. Put this in a localscript and on every respawn clone the localscript to the players character. I believe that if a sound is put in the PlayerGui, it will only play locally.
local player = game.Players.LocalPlayer local mouse = player:GetMouse() local sound = game.Workspace.Sound local soundLength = 5 local maxDist = 30 local sounds = {} mouse.KeyDown:connect(function(key) if key == "v" then for _,v in pairs(game.Players:GetChildren()) do local dist = (v.Character.Torso.Position - player.Character.Torso.Position).magnitude if dist <= maxDist then local c = sound:Clone() table.insert(sounds, c) c.Parent = v.PlayerGui c:Play() end end wait(soundLength) for _,v in pairs(sounds) do v:Destroy() end end end)
This script may not be failsafe. You'll have to adjust it to what you need.
You have to think about what you have access to.
In ROBLOX, in order to grab user input and do something with it, you have to use a LocalScript. For the purposes of this tutorial, I will assume you're not using Filtering.
The way I prefer to handle user input is the UserInputService. This service contains a multitude of events for input events, including those exclusive to Touch devices.
One of these events is called InputBegan
. Is is equivalent to KeyDown
, but has unique 'keycodes' for every key. You are given a singular "UserInputObject" when you connect all events with UserInputService, so some sanity checking is required to access anything safely:
local uis = Game:GetService("UserInputService") local sound = Workspace.Part1.Sound --In order to make a sound reduce volume at a distance, it has to be the child of some part. If you want this to play at the Player's location, you'll have to parent it to one of their Body parts. uis.InputBegan:connect(function(inst) if inst.UserInputType = Enum.UserInputType.Keyboard then if inst.KeyCode = Enum.KeyCode.V then sound:Play() end end end)
I think i you put the sound in a brick and make the brick small and far away from the 'Object, person' you can't hear it. Set the volume to 0.6 and I think that will work! :) Sorry might not be right I'm a dumbo! Worked for me!