AudioEmitter

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

AudioEmitter emite fluxos de áudio no mundo. Ele fornece um único entrada</

AudioEmitters são ouvidos por AudioListeners para implementar a implementação 3D.

Amostras de código

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()

Resumo

Propriedades

Métodos

Propriedades

AngleAttenuation

BinaryString
Ler Parallel
Segurança Roblox

Representa uma curva de volume sobre ângulo que afeta o quão alto um AudioListener ou AudioEmitter ouvirá o LookVector, com base no ângulo entre eles e o 2>Datatype.CFrame.LookVector|LookVector2> associado ao 5>Class.Audio5>.

Essa propriedade é interna e não pode ser acessada por scripts; ela existe para apoiar a replicação. Veja SetAngleAttenuation() para detalhes de uso.

AudioInteractionGroup

Ler Parallel

Se um AudioEmitter e um AudioListener compartilham um grupo de interação, então o ouvinte é capaz de ouvir o emissor.

DistanceAttenuation

BinaryString
Ler Parallel
Segurança Roblox

Representa uma curva de volume-over-distance que afeta o quão alto um AudioListener vai ouvir o AudioEmitter, com base na distância entre eles.

Essa propriedade é interna e não pode ser acessada por scripts; ela existe para apoiar a replicação. Veja SetDistanceAttenuation() para detalhes de uso.

Métodos

GetAngleAttenuation

Retorna um ângulo de mapeamento de tabela para volume. Os números são números entre 0 e 180 (inclusivo), enquanto os valores são números entre 0 e 1> 11> (inclusivo) descrevendo como a volumetria diminui dependendo da direção. Este método retorna uma tabela vazia se a curva de ajust


Devolução

Ângulo de obtenção da tabela para o volume, como descrito acima.

GetConnectedWires

Instances

Retorna uma matriz de Wires que estão conectados ao marcarespecificado. AudioEmitter tem um marcarde "entrada".

Parâmetros

pin: string

Devolução

Instances

GetDistanceAttenuation

Retorna uma distância de mapa de tabela para volume. As chaves são números maiores que ou iguais a 0, enquanto os valores são números entre 0 e 1 (inclusivos) descrevendo como o volume atenua ao longo da distância. Este método retorna uma tabela vazia se a curva de atenução padrão estiver sendo usada.


Devolução

GetInteractingListeners

Instances

Devolução

Instances

SetAngleAttenuation

void

Define uma curva de volume sobre ângulo que afeta o quão alto um AudioListener vai ouvir o AudioEmitter, com base no ângulo entre eles e o LookVector associado ao 2>Class.Audio2>.

A curva é representada por uma tabela de mapa de ângulo para valores de volume. Os valores são esperados para serem números únicos entre 0 e 180 (incluído), enquanto os valores são esperados para serem números entre 0 e 1> 11> (incluído). Tabelas contendo até 400 pares de valores

O volume do AudioEmitter a partir da perspectiva de um AudioListener em um ângulo a é determinado por interpolar diretamente entre os níveis de volume

Este volume será multiplicado com os volumes de todas as outras curvas de atenução (incluindo as que estão no receptor AudioListener ) para obter a audibilidade final.

Se a tabela estiver vazia ou nil, o AudioEmitter padrão usa uma curva de atenuação de ângulo com o valor de volume constante de 1.

Parâmetros

curve: Dictionary

Devolução

void

SetDistanceAttenuation

void

Define uma curva de volume-over-distance que afeta o quão alto um AudioListener vai ouvir o AudioEmitter, com base na distância entre eles.

A curva é representada por uma tabela de distâncias de mapa para valores de volume. As chaves devem ser números únicos maiores que ou igais a 0, enquanto os valores devem ser números entre 0 e 1 (inclusivo). Tabelas contendo até 400 pares de chaves-valor são suportados.

O volume do AudioEmitter a partir da perspectiva de um AudioListener em uma distância d é determinado por interpolar linhares diretamente entre os n

Este volume será multiplicado com os volumes de todas as outras curvas de atenução (incluindo as que estão no receptor AudioListener ) para obter a audibilidade final.

Se a tabela estiver vazia ou nil, o AudioEmitter padrão é usar uma curva de atenução de distância determinada pela lei inversa-quadrativa.

Parâmetros

curve: Dictionary

Devolução

void

Amostras de código

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

Eventos