AudioEmitter
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
AudioEmitter emette flussi audio nel Mondo.Fornisce un singolo Input pin che può essere collegato da uno o più Wires .Qualsiasi stream collegato a un AudioEmitter viene trasmesso nel mondo dalla posizione del parentdell'emittente.Se il genitore è un Attachment , Camera o PVInstance , la posizione mondiale del parentverrà utilizzata.Se il genitore non è una di queste Classi, il AudioEmitter è effettivamente silente.
AudioEmitters sono ascoltati da AudioListeners al fine di implementare la spatializzazione 3D.
Campioni di codice
local part1: BasePart = workspace.Speakers.Left
local part2: BasePart = workspace.Speakers.Right
local player: AudioPlayer = workspace.AudioPlayer
local leftEmitter = Instance.new("AudioEmitter")
local rightEmitter = Instance.new("AudioEmitter")
local toLeft = Instance.new("Wire")
local toRight = Instance.new("Wire")
leftEmitter.Parent = part1
rightEmitter.Parent = part2
toLeft.Parent = leftEmitter
toLeft.SourceInstance = player
toLeft.TargetInstance = leftEmitter
toRight.Parent = rightEmitter
toRight.SourceInstance = player
toRight.TargetInstance = rightEmitter
player:Play()
Sommario
Proprietà
Rappresenta come cambia il volume percepito del suono emesso in base all'angolo tra un AudioListener e il LookVector associato al AudioEmitter .
Controlli che sono in grado di sentire questo .
Rappresenta come il volume percepito del suono emesso cambia con l'aumento della distanza tra un AudioListener e un AudioEmitter.
Controlla quanto dettagliata debba essere la simulazione audio per questo AudioEmitter .
Metodi
Ottiene la curva di attenuazione dell'angolo che il AudioEmitter sta utilizzando, o una tabella vuota se sta utilizzando la curva predefinita.
Restituisce un array di Wires che sono connessi al pin specificato.
Ottiene la curva di attenuamento della distanza che il AudioEmitter sta utilizzando, o una tabella vuota se sta utilizzando la curva predefinita.
Imposta la curva di attenuazione dell'angolo che il AudioEmitter dovrebbe utilizzare, o utilizza una curva costante di volume 1 se non viene fornita.
Imposta la curva di attenuazione della distanza che il AudioEmitter deve utilizzare, o utilizza una curva di rolloff inversa se non viene fornita.
Eventi
Si accende quando un'altra istanza è connessa o disconnessa dal AudioEmitter attraverso un Wire .
Proprietà
AngleAttenuation
Rappresenta una curva volume-over-angelo che influisce sul volume con cui un AudioListener ascolterà il AudioEmitter , in base all'angolo tra loro e il LookVector associato al AudioEmitter .
Questa proprietà è interna e non può essere accessibile dagli script; esiste per supportare la replicazione. Vedi SetAngleAttenuation() per i dettagli dell'uso.
AudioInteractionGroup
Se un AudioEmitter e un AudioListener condividono un Gruppodi interazione, allora l'ascoltatore è in grado di sentire l'emittente.
DistanceAttenuation
Rappresenta una curva volume-over-distance che influisce sul volume con cui un AudioListener ascolterà il AudioEmitter, in base alla distanza tra loro.
Questa proprietà è interna e non può essere accessibile dagli script; esiste per supportare la replicazione. Vedi SetDistanceAttenuation() per i dettagli dell'uso.
SimulationFidelity
Controlla quanto dettagliata debba essere la simulazione audio per questo AudioEmitter , simile a MeshPart.CollisionFidelity o MeshPart.RenderFidelity .
AudioEmitters e AudioListeners che non sono d'accordo sul livello di dettaglio necessario utilizzeranno l'opzione meno dettagliata.
Metodi
GetAngleAttenuation
Restituisce un angolo di mappatura del tavolo al volume.Le chiavi sono numeri compresi tra 0 e 180 (inclusi), mentre i valori sono numeri compresi tra 0 e 1 (inclusi) che descrivono come il volume si attenua a seconda della direzione.Questo metodo restituisce una tabella vuota se viene utilizzata la curva di attenuazione angolare predefinita.
Restituzioni
Angolo di mappatura della tabella al volume, come descritto sopra.
GetConnectedWires
Restituisce un array di Wires che sono connessi al pin specificato. AudioEmitter ha un pin "Input".
Parametri
Restituzioni
GetDistanceAttenuation
Restituisce una distanza di mappatura del tavolo al volume.Le chiavi sono numeri maggiori o uguali a 0, mentre i valori sono numeri tra 0 e 1 (inclusi) che descrivono come il volume si attenua a distanza.Questo metodo restituisce una tabella vuota se viene utilizzata la curva di attenuazione predefinita della distanza.
Restituzioni
GetInteractingListeners
Restituzioni
SetAngleAttenuation
Imposta una curva di volume-over-angolo che influisce sul modo in cui AudioListener sentirà forte il AudioEmitter , in base all'angolo tra loro e il LookVector associato al AudioEmitter .
La curva è rappresentata da chiavi di mappatura di tabelle per gli angoli ai valori di volume.Si prevede che le chiavi siano numeri unici tra 0 e 180 (inclusi), mentre si prevede che i valori siano numeri tra 0 e 1 (inclusi).Sono supportate tabelle che contengono fino a 400 coppie chiave-valore.
Il volume del AudioEmitter da parte della prospettiva di un AudioListener a un angolo a è determinato dall'interpolazione lineare tra i livelli di volume per i punti sulla curva i cui valori di angolo sono direttamente sopra e sotto a .Se non c'è alcun punto al di sotto di a o nessun punto al di sopra di a, viene scelto il livello di volume dell'altro punto.Fondamentalmente, la curva è una sequenza di punti connessi da linee dritte, e oltre ai suoi estremi sinistra e destra, la curva si estende verso l'esterno ai loro rispettivi livelli di volume.
Questo volume sarà moltiplicato con i volumi di tutte le altre curve di attenuazione (incluse quelle sul ricevitore AudioListener ) per ottenere l'audibilità finale.
Se la tabella è vuota o nil , il AudioEmitter predefinito utilizza una curva di attenuazione dell'angolo con il valore costante del volume di 1 .
Parametri
Restituzioni
SetDistanceAttenuation
Imposta una curva di volume a distanza che influisce sul volume con cui un AudioListener ascolterà il AudioEmitter, in base alla distanza tra loro.
La curva è rappresentata da chiavi di mappatura di tabella per le distanze ai valori del volume.Le chiavi sono destinate ad essere numeri unici maggiori o uguali a 0, mentre i valori sono destinati ad essere numeri tra 0 e 1 (inclusi).Sono supportate tabelle che contengono fino a 400 coppie chiave-valore.
Il volume del AudioEmitter da parte della prospettiva di un AudioListener a una distanza d è determinato dall'interpolazione lineare tra i livelli di volume per i punti sulla curva i cui valori di distanza sono direttamente sopra e sotto d .Se non c'è alcun punto al di sotto di d o nessun punto al di sopra di d, viene scelto il livello di volume dell'altro punto.Fondamentalmente, la curva è una sequenza di punti connessi da linee dritte, e oltre ai suoi estremi sinistra e destra, la curva si estende all'infinito verso l'esterno ai loro rispettivi livelli di volume.
Questo volume sarà moltiplicato con i volumi di tutte le altre curve di attenuazione (incluse quelle sul ricevitore AudioListener ) per ottenere l'audibilità finale.
Se la tabella è vuota o nil , il AudioEmitter predefinito utilizza una curva di attenuamento della distanza determinata dalla legge inversa-quadrato.
Parametri
Restituzioni
Campioni di codice
local Players = game:GetService("Players")
local emitterPart = Instance.new("Part")
emitterPart.Anchored = true
emitterPart.Position = Vector3.new(0, 0, 0)
emitterPart.Parent = workspace
local emitter: AudioEmitter = Instance.new("AudioEmitter")
emitter.Parent = emitterPart
local curve = {}
curve[10] = 1 -- Within a distance of 10 studs, listeners hear this emitter at full volume
curve[100] = 0.4 -- At a distance of 100 studs, listeners hear this emitter at 40% volume
curve[300] = 0 -- At any distance farther than 300 studs, listeners cannot hear this emitter
emitter:SetDistanceAttenuation(curve)
-- Replicate the rolloff curve from the old voice implementation
-- Default voice without the new audio API uses quadratic rolloff ranging from 7 to 80 studs
local MIN_DISTANCE = 7
local MAX_DISTANCE = 80
local CURVE_STEP_SIZE = 2
local voiceCurve = {}
for i = MIN_DISTANCE, MAX_DISTANCE, CURVE_STEP_SIZE do
voiceCurve[i] = ((i - MIN_DISTANCE) - (MAX_DISTANCE - MIN_DISTANCE)) ^ 2 / (MAX_DISTANCE - MIN_DISTANCE) ^ 2
end
voiceCurve[MAX_DISTANCE] = 0
local function setVoiceCurve(character)
local voiceEmitter: AudioEmitter = character:WaitForChild("AudioEmitter")
voiceEmitter:SetDistanceAttenuation(voiceCurve)
end
for _, player in Players:GetPlayers() do
if player.Character then
setVoiceCurve(player.Character)
end
player.CharacterAdded:Connect(setVoiceCurve)
end
Eventi
WiringChanged
Evento che si attiva dopo che un Wire diventa connesso o disconnesso, e che Wire è ora o era precedentemente connesso a un pin sulla AudioEmitter e a qualche altra esempiowirable.
Parametri
Se l'istanza è stata connessa o disconnessa.
Il pin sul AudioEmitter che i bersagli Wire .
Il Wire tra la AudioEmitter e l'altra esempio.