AudioEmitter

Visualizza obsoleti

*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

Playing one asset from multiple 3d locations at once

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à

Metodi

Proprietà

AngleAttenuation

BinaryString
Lettura Parallela
Sicurezza Roblox

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

Lettura Parallela

Se un AudioEmitter e un AudioListener condividono un gruppo di interazione, allora il lettore è in grado di ascoltare l'emittente.

DistanceAttenuation

BinaryString
Lettura Parallela
Sicurezza Roblox

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

Instances

Restituisce un' array di Wires che sono connessi alla pin specificata. AudioEmitter ha una sola pin "Input".

Parametri

pin: string

Restituzioni

Instances

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

Instances

Restituzioni

Instances

SetAngleAttenuation

void

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

curve: Dictionary

Restituzioni

void

SetDistanceAttenuation

void

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

curve: Dictionary

Restituzioni

void

Campioni di codice

Custom Distance Attenuation

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