SoundService
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
Un servizio che determina varie parti di come Sounds gioca nel Gioco. SoundService viene anche spesso utilizzato per memorizzare SoundGroups anche se non è obbligatorio per SoundGroups per funzionare.
Cosa può fare SoundService?
Le proprietà SoundService come SoundService.AmbientReverb , SoundService.DistanceFactor , SoundService.DopplerScale e 1> Class.SoundService.RolloffScale1> possono essere utilizzate per modificare il modo in cui tutti i 4> Class.Sound|Sounds4> giocano
La funzione SoundService:SetListener() consente agli sviluppatori di impostare la posizione in cui vengono ascoltati i suoni.
SoundService:PlayLocalSound() può essere utilizzato per riprodurre un suono localmente indipendentemente dal fatto che si trova parented a.
Gli sviluppatori che vogliono saperne di più su come il suono funziona in Roblox dovrebbero consultare la documentazione fornita per il motore sonoro FMOD .
Campioni di codice
local Players = game:GetService("Players")
local CollectionService = game:GetService("CollectionService")
local SoundService = game:GetService("SoundService")
local localPlayer = Players.LocalPlayer
local reverbTags = {
["reverb_Cave"] = Enum.ReverbType.Cave,
}
-- collect parts and group them by tag
local parts = {}
for reverbTag, reverbType in pairs(reverbTags) do
for _, part in pairs(CollectionService:GetTagged(reverbTag)) do
parts[part] = reverbType
end
end
-- function to check if a position is within a part's extents
local function positionInPart(part, position)
local extents = part.Size / 2
local offset = part.CFrame:PointToObjectSpace(position)
return offset.x < extents.x and offset.y < extents.y and offset.z < extents.z
end
local reverbType = SoundService.AmbientReverb
while true do
task.wait()
if not localPlayer then
return
end
local character = localPlayer.Character
-- default to no reverb
local newReverbType = Enum.ReverbType.NoReverb
if character and character.PrimaryPart then
local position = character.PrimaryPart.Position
-- go through all the indexed parts
for part, type in pairs(parts) do
-- see if the character is within them
if positionInPart(part, position) then
-- if so, pick that reverb type
newReverbType = type
break
end
end
end
-- set the reverb type if it has changed
if newReverbType ~= reverbType then
SoundService.AmbientReverb = newReverbType
reverbType = newReverbType
end
end
local ServerScriptService = game:GetService("ServerScriptService")
local SoundService = game:GetService("SoundService")
-- Create custom plugin button
local toolbar = plugin:CreateToolbar("Empty Script Adder")
local newScriptButton = toolbar:CreateButton("Add Script", "Create an empty Script", "rbxassetid://1507949215")
local function playLocalSound(soundId)
local sound = Instance.new("Sound")
sound.SoundId = soundId
SoundService:PlayLocalSound(sound)
sound.Ended:Wait()
sound:Destroy()
end
local function onNewScriptButtonClicked()
-- Create new empty script
local newScript = Instance.new("Script")
newScript.Source = ""
newScript.Parent = ServerScriptService
playLocalSound("rbxassetid://0") -- Insert audio asset ID here
end
newScriptButton.Click:Connect(onNewScriptButtonClicked)
Sommario
Proprietà
L'ambiente sonoro preset usato da SoundService .
Il numero di studs per essere considerato un metro da SoundService quando si calcola la riduzione del volume 3D Sound .
Questa proprietà determina il grado in cui la variazione di pitch di un oggetto 3D Sound varia a causa dell'effetto Doppler.
Imposta se il riproduzione di Sound da un client si replica sul Server.
Imposta la velocità con cui si attenua il volume 3D Sound o si 'rotola Off'.
Metodi
GetListen restituisce il tipo di ascoltatore attuale e quello che è impostato come ascoltatore.
Riproduce un Sound localmente, il che significa che il suono sarà ascoltato solo dal client che chiama questa funzione, indipendentemente dal fatto che sia parented a.
Imposta il lettore per il SoundService .
Proprietà
AmbientReverb
L'ambiente sonoro preset usato da SoundService .
Il Enum.ReverbType questa proprietà simula un'ampia gamma di impatti diversi sull'Ambiente. Ogni diversa opzione corrisponde a un preset disponibile nel motore sonoro FMOD. Ad esempio, quando AmbientReverb è impostato su Hangar, il suono si riverbera in modo diverso per simulare di essere in un grande Spaziochiuso.
Cambiare gli effetti di AmbientReverb cambia le seguenti proprietà utilizzate dal motore sonoro di Roblox.
- Tempo di decadimento della risonanza
- Tempo di ritardo iniziale della riflessione
- Tempo di ritardo di risonanza tardiva rispetto alla riflessione iniziale
- Riferimento ad alta frequenza
- Rapporto tempo di decadenza ad alta frequenza/频率 media
- Valore che controlla la densità dell'eco nella decadenza tardiva
- Valore che controlla la densità modale nella decadenza di ritorno tardivo
- Riferimento bassa frequenza
- Livello di effetto relativo alla stanza a bassa frequenza
- Livello di effetto della stanza relativo alle alte frequenze
- Livello di riflessione precoce rispetto all'effetto della stanza
- Livello effetto stanza a frequenze medie
Coloro che sono interessati a trovare ulteriori informazioni sui preset ambientali dovrebbero vedere la documentazione FMOD sul tema . Per la maggior parte degli sviluppatori, tuttavia, i nomi Enum.ReverbType sono sufficientemente descrittivi per essere in grado di utilizzare questa impostazione senza conoscenza avanzata.
Campioni di codice
local Players = game:GetService("Players")
local CollectionService = game:GetService("CollectionService")
local SoundService = game:GetService("SoundService")
local localPlayer = Players.LocalPlayer
local reverbTags = {
["reverb_Cave"] = Enum.ReverbType.Cave,
}
-- collect parts and group them by tag
local parts = {}
for reverbTag, reverbType in pairs(reverbTags) do
for _, part in pairs(CollectionService:GetTagged(reverbTag)) do
parts[part] = reverbType
end
end
-- function to check if a position is within a part's extents
local function positionInPart(part, position)
local extents = part.Size / 2
local offset = part.CFrame:PointToObjectSpace(position)
return offset.x < extents.x and offset.y < extents.y and offset.z < extents.z
end
local reverbType = SoundService.AmbientReverb
while true do
task.wait()
if not localPlayer then
return
end
local character = localPlayer.Character
-- default to no reverb
local newReverbType = Enum.ReverbType.NoReverb
if character and character.PrimaryPart then
local position = character.PrimaryPart.Position
-- go through all the indexed parts
for part, type in pairs(parts) do
-- see if the character is within them
if positionInPart(part, position) then
-- if so, pick that reverb type
newReverbType = type
break
end
end
end
-- set the reverb type if it has changed
if newReverbType ~= reverbType then
SoundService.AmbientReverb = newReverbType
reverbType = newReverbType
end
end
DefaultListenerLocation
DistanceFactor
Il numero di studs per essere considerato un metro da SoundService quando si calcola la riduzione del volume 3D Sound .
Per impostazione predefinita, il DistanceFactor è 3.33. Ciò significa che, per gli scopi di riduzione del volume, un metro è considerato 3.33 studs. Più il DistanceFactor è grande, più il suono si attenua gradualmente.
local SoundService = game:GetService("SoundService")SoundService.DistanceFactor = 1 -- 1 meter = 1 studSoundService.DistanceFactor = 10 -- 1 meter = 10 studs
Gli sviluppatori sono consigliati di modificare questa proprietà solo se il loro gioco usa un'altra Ridimensionare. Ad esempio, quando si utilizzano personaggi personalizzati più grandi, gli sviluppatori potrebbero voler ridurre il DistanceFactor. In tutti gli altri casi, Sound impostazioni come Sound.RollOffMode dovrebbero essere utilizzate invece.
Coloro che vogliono saperne di più su come il suono 3D in Roblox funziona, dovrebbero consultare la documentazione FMOD.
DopplerScale
Questa proprietà determina il grado in cui la variazione di pitch di un oggetto 3D Sound varia a causa dell'effetto Doppler.
L'effetto Doppler descrive un fenomeno in cui il tono di un suono cambia mentre la fonte e l'osservatore del suono si allontanano o si avvicinano l'un l'altro. L'effetto Doppler può essere spesso visto nella vita reale, come quando un'auto con una sirena passa.
L'aumento di questo valore esagera l'impatto dell'effetto Doppler, mentre la sua diminuzione lo minimizza. Per impostazione predefinita, il valore di questa proprietà è 1.
local SoundService = game:GetService("SoundService")SoundService.DopplerScale = 1 -- defaultSoundService.DopplerScale = 2 -- exaggerated Doppler effectSoundService.DopplerEffect = 0.5 -- subdued Doppler effect
Nota che l'effetto Doppler non ha alcun impatto su 2D Sounds , ( Sounds non è parented a BasePart o 1> Class.Animation1> ).
Gli sviluppatori che vogliono saperne di più sulle diverse impostazioni utilizzate dal motore sonoro di Roblox dovrebbero consultare la documentazione FMOD .
RespectFilteringEnabled
La proprietà RespectFilteringEnabled determinare se il riproduzione di Sound è replicato dal client al Server, e quindi dal Server. In altre parole, quando un LocalScript chiama 1> Class.Sound:Play()1> e questa proprietà è 4> vera 4> , il suono si ri
RolloffScale
Imposta la velocità con cui si attenua il volume 3D Sound o si 'rotola Off'.
Nota, questa proprietà si applica solo a Sounds il cui Sound.RollOffMode proprietà è impostata su 'Inverse' o 'InverseTapered'. 'Linear' e 'LinearS
Più il valore di RolloffScale è alto, più velocemente il volume di un suono 3D si attenua man mano che la distanza tra il lettore e il suono aumenta.
Per impostazione predefinita, lo scalo di avvio è impostato su 1, che simula il Mondoreale.
local SoundService = game:GetService("SoundService")SoundService.RolloffScale = 1 -- attenuation simulates real worldSoundService.RolloffScale = 2 -- sound attenuates twice as fast as the real world
Gli sviluppatori che vogliono saperne di più sulle diverse impostazioni utilizzate dal motore sonoro di Roblox dovrebbero consultare la documentazione FMOD .
VolumetricAudio
Metodi
GetListener
Questa funzione restituisce il SoundService tipo di ascoltatore attuale e ciò che è impostato come ascoltatore.
Il primo risultato restituito è il Enum.ListenerType del lettore, il secondo risultato dipende dal ListenerType:
<tbody><tr><td><code>Enum.ListenType.Camera</code></td><td>Non restituisce un oggetto ascoltatore come <code>Workspace/CurrentCamera</code> viene sempre utilizzato</td></tr><tr><td><code>Enum.ListenType.CFrame</code></td><td>Restituisce il <code>Datatype.CFrame</code> utilizzato in <code>Class.SoundService:SetListener()</code></td></tr><tr><td><code>Enum.ListenType.ObjectPosition</code></td><td>Restituisce il <code>Class.BasePart</code> utilizzato in <code>Class.SoundService:Setlistener()</code></td></tr><tr><td><code>Enum.ListenType.ObjectCFrame</code></td><td>Restituisce il <code>Class.BasePart</code> utilizzato in <code>Class.SoundService:Setlistener()</code></td></tr></tbody>
Tipo di ascoltatore | Descrizione |
---|
Il ricevitore può essere cambiato usando SoundService:SetListener() .
local SoundService = game:GetService("SoundService")SoundService:SetListener(Enum.ListenerType.CFrame, CFrame.new(0, 0, 0))local listenerType, listener = SoundService:GetListener()print(listenerType, listener)
Cos'è un ascoltatore?
Il ricevitore determina il punto in cui l'audio nel gioco viene 'ascoltato' dal Giocatore. Per 3D Sounds (Sounds parented to a BasePart o Attachment ) i ricevitori influenzano il volume e l'equilibrio sinistra/destra di un suono di riproduzione. I ricevitori non hanno alcun'influenza sul playback dei suoni 2D poiché non hanno posizione di
Per impostazione predefinita, il lettore è impostato sulla Camera attuale. Tuttavia, è possibile utilizzare una gamma di diversi tipi di ascoltatori.
Restituzioni
Il corrente Enum.ListenerType e cosa l'ascoltatore è stato impostato su. Dipendendo dal Enum.ListenerType l'ascoltatore potrebbe essere un Class.BasePart , un 1> Datatype.CFrame o null.
OpenAttenuationCurveEditor
Parametri
Restituzioni
OpenDirectionalCurveEditor
Parametri
Restituzioni
PlayLocalSound
Riproduce un Sound localmente, il che significa che il suono sarà ascoltato solo dal client che chiama questa funzione, indipendentemente dal fatto che sia parented a . Questa funzione è più utile per giocare un Sound localmente nel client Studio, per esempio in un Script per un 2>Class.Plugin2> .
Parametri
Restituzioni
Campioni di codice
local ServerScriptService = game:GetService("ServerScriptService")
local SoundService = game:GetService("SoundService")
-- Create custom plugin button
local toolbar = plugin:CreateToolbar("Empty Script Adder")
local newScriptButton = toolbar:CreateButton("Add Script", "Create an empty Script", "rbxassetid://1507949215")
local function playLocalSound(soundId)
local sound = Instance.new("Sound")
sound.SoundId = soundId
SoundService:PlayLocalSound(sound)
sound.Ended:Wait()
sound:Destroy()
end
local function onNewScriptButtonClicked()
-- Create new empty script
local newScript = Instance.new("Script")
newScript.Source = ""
newScript.Parent = ServerScriptService
playLocalSound("rbxassetid://0") -- Insert audio asset ID here
end
newScriptButton.Click:Connect(onNewScriptButtonClicked)
SetListener
Imposta l'ascoltatore utilizzato dal client.
Il primo parametro è il Enum.ListenerType del lettore, il secondo parametro dipende dal inserisci / scrividi lettore.
- Camera ListenerType - Non restituisce un oggetto lettore come Workspace.CurrentCamera è sempre usato
- CFrame ListenerType - Il CFrame da utilizzare
- ObjectPosition ListenerType - The BasePart to be used
- ObjectCFrame ListenerType - The BasePart da utilizzare
Il lettore può essere recuperato utilizzando SoundService:GetListener() :
local SoundService = game:GetService("SoundService")SoundService:SetListener(Enum.ListenerType.CFrame, CFrame.new(0, 0, 0))local listenerType, listener = SoundService:GetListener()print(listenerType, listener)
Cos'è un ascoltatore?
Il SoundService ascoltatore determinare il punto in cui l'audio nel gioco viene 'sentito' dal Giocatore. Per i suoni Sounds (suoni legati a una BasePart o Attachment ) l'ascoltatore influenza il volume e l'equilibrio sinistra/destra di un suono di riproduzione. Gli ascoltatori non hanno alcun influenza sul
Per impostazione predefinita, il lettore è impostato sulla Camera attuale. Tuttavia, è possibile utilizzare una gamma di diversi tipi di ascoltatori.
Parametri
Il Enum.ListenerType del lettore.
Dipendente dal Enum.ListenerType . BasePart per 'ObjectPosition' o 'ObjectCFrame', CFrame per 'CFrame', null per 'Camera'.