AudioEmitter
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
AudioEmitter emette i flussi audio nel Mondo. Fornisce un singolo
AudioEmitters sono ascoltati da AudioListeners per implementare la 3D spatializzazione.
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 il volume percepito del suono emesso in base all'angolo tra un AudioListener e un LookVector associato con il AudioEmitter .
Controlli che AudioListeners sono in grado di ascoltare questo AudioEmitter .
Rappresenta come il volume percepito del suono emesso cambia man mano che la distanza tra un AudioListener e un AudioEmitter aumenta.
Metodi
Ottiene la curva di attenuazione dell'angolo che il AudioEmitter sta usando, o una tabella vuota se sta usando la curva predefinita.
Restituisce un'arrangione di Wires che sono connessi all' pinspecificato.
Ottiene la curva di attenuazione della distanza che il AudioEmitter sta usando, o una tabella vuota se sta usando la curva predefinita.
Imposta la curva di attenuazione dell'angolo che il AudioEmitter dovrebbe utilizzare, o usa una curva di volume costante 1 se non viene fornita.
Imposta la curva di attenuazione della distanza che il AudioEmitter dovrebbe utilizzare, o usa una curva di rotolamento inversa se non è fornita.
Proprietà
AngleAttenuation
Rappresenta una curva di volume-over-angle che influisce sul volume di un AudioListener , basato sull'angolo tra di loro e il AudioEmitter associato al LookVector .
Questa proprietà è interna e non può essere accessibile dagli script; esiste per supportare la replicazione. Vedi SetAngleAttenuation() per i dettagli di utilizzo.
AudioInteractionGroup
Se un AudioEmitter e un AudioListener condividono un gruppo di interazione, allora il lettore è in grado di ascoltare l'emittente.
DistanceAttenuation
Rappresenta una curva di volume-over-distance che influisce sul volume di un AudioListener , basato sulla distanza tra di loro.
Questa proprietà è interna e non può essere accessibile dagli script; esiste per supportare la replicazione. Vedi SetDistanceAttenuation() per i dettagli di utilizzo.
Metodi
GetAngleAttenuation
Restituisce un angolo di mappatura della tabella in volume. Le chiavi sono numeri tra 0 e 180 (incluso), mentre i valori sono numeri tra 0 e 1> 11> (incluso) che descrive come il volume si attenua a seconda della direzione. Questo metodo restituisce una tabella vuota se viene utilizzata la curva di attenuazione predefinit
Restituzioni
Angolo di mappatura della tabella per il volume, come descritti sopra.
GetConnectedWires
Restituisce un' array di Wires che sono connessi alla pin specificata. AudioEmitter ha una sola pin "Input".
Parametri
Restituzioni
GetDistanceAttenuation
Restituisce una distanza di pixelizzazione della tabella alla volume. Le chiavi sono numeri maggiori o uguali a 0, mentre i valori sono numeri tra 0 e 1 (inclusi) che descrive come il volume si attenua sulla distanza. Questo metodo restituisce un'istanza vuota se la curva di pixelizzazione predefinita viene utilizzata.
Restituzioni
GetInteractingListeners
Restituzioni
SetAngleAttenuation
Imposta una curva di volume-over-angle che influenza il volume di un AudioListener , basato sull'angolo tra di loro e il AudioEmitter associato al LookVector .
La curva è rappresentata da un'angolo di chiave di mappa della tabella per i valori di volume. Le chiavi sono previste essere uniche tra 0 e 180 (inclusa), mentre i valori sono previsti essere numeri tra 0 e 1> 11> (inclusa). Le tabelle che contengono fino a 400 chiavi-valore sono supportate.
Il volume del AudioEmitter dalla prospettiva di un AudioListener in un angolo a è determinato dall'interpolazione lineare tra i livelli di volume per i punt
Questo volume sarà moltiplicato con i volumi di tutte le altre curve di attenuazione (inclusa quella sui ricevitori AudioListener ) per ottenere l'audibilità finale.
Se la tabella è vuota o nil, il AudioEmitter predefinito usa una curva di attenuazione angolare con il valore di volume costante di 1 .
Parametri
Restituzioni
SetDistanceAttenuation
Imposta una curva di volume-over-distance che influisce sul volume di un AudioListener , basato sulla distanza tra di loro.
La curva è rappresentata da una chiave di distanza di mappatura della tabella ai valori di volume. Le chiavi sono previste essere valori unici più grandi o uguali a 0, mentre i valori sono previsti essere i numeri tra 0 e 1 (inclusi). Le tabelle che contengono fino a 400 valori chiave sono supportati.
Il volume del AudioEmitter dalla prospettiva di un AudioListener a una distanza d è determinato dall'interpolazione lineare tra i livelli di volume per i
Questo volume sarà moltiplicato con i volumi di tutte le altre curve di attenuazione (inclusa quella sui ricevitori AudioListener ) per ottenere l'audibilità finale.
Se la tabella è vuota o nil , il AudioEmitter predefinito usa una curva di attenuazione della distanza determinata dalla legge inversa quadrata.
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