AudioEmitter
*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
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
Representa como o volume percebido do som emissor muda com base no ângulo entre um AudioListener e um LookVector associado ao AudioEmitter .
Controles que AudioListeners são capazes de ouvir este AudioEmitter .
Representa como o volume percebido do som emitido muda à medida que a distância entre um AudioListener e um AudioEmitter aumenta.
Métodos
Obtém a curva de atenução de ângulo que o AudioEmitter está usando, ou uma tabela vazia se estiver usando a curva padrão.
Retorna um array de Wires que estão conectados ao marcarespecificado.
Obtém a curva de atenução de distância que o AudioEmitter está usando, ou uma tabela vazia se estiver usando a curva padrão.
Define a curva de atenução de ângulo que o AudioEmitter deve usar, ou usa uma curva de volume constante de 1 se nenhum for fornecido.
Define a curva de atenução de distância que o AudioEmitter deve usar, ou usa uma curva de rolagem inversa se nenhuma for fornecida.
Propriedades
AngleAttenuation
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
Se um AudioEmitter e um AudioListener compartilham um grupo de interação, então o ouvinte é capaz de ouvir o emissor.
DistanceAttenuation
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
Retorna uma matriz de Wires que estão conectados ao marcarespecificado. AudioEmitter tem um marcarde "entrada".
Parâmetros
Devolução
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
Devolução
SetAngleAttenuation
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
Devolução
SetDistanceAttenuation
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
Devolução
Amostras de código
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