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 para o mundo.Ele fornece um único pino de entrada que pode ser conectado a um ou mais .Quaisquer streams conectados a um AudioEmitter são transmitidos para o mundo a partir da posição do emissor pai.Se o pai for um Attachment , Camera ou PVInstance , a posição mundial do pai será usada.Se o pai não for uma dessas Classes, o AudioEmitter é efetivamente silencioso.

AudioEmitters são ouvidos por AudioListeners a fim de implementar a spatializaçã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

Eventos

Propriedades

AngleAttenuation

BinaryString
Segurança Roblox
Ler Parallel

Representa uma curva de volume sobre ângulo que afeta o quão alto um AudioListener ouvirá o AudioEmitter , com base no ângulo entre eles e o LookVector associado ao AudioEmitter .

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

AudioInteractionGroup

Ler Parallel

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

DistanceAttenuation

BinaryString
Segurança Roblox
Ler Parallel

Representa uma curva de volume-em-distância que afeta como alto um AudioListener ouvirá o AudioEmitter, com base na distância entre eles.

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

Ler Parallel

Métodos

GetAngleAttenuation

Retorna um ângulo de mapeamento de tabela para volume.Chaves são números entre 0 e 180 (inclusivo), enquanto os valores são números entre 0 e 1 (inclusivo) descrevendo como o volume atenua dependendo da direção.Este método retorna uma tabela vazia se a curva de atenuação de ângulo padrão estiver sendo usada.


Devolução

Ângulo de mapeamento de tabela para volume, como descrito acima.

GetAudibilityFor

Parâmetros

listener: AudioListener
Valor Padrão: ""

Devolução

GetConnectedWires

Instances

Retorna um array de Wires que estão conectados ao marcarespecificado. AudioEmitter tem um marcar"Entrada".

Parâmetros

pin: string
Valor Padrão: ""

Devolução

Instances

GetDistanceAttenuation

Retorna uma distância de mapeamento de tabela para volume.Chaves são números maiores ou iguais a 0, enquanto os valores são números entre 0 e 1 (inclusivo) descrevendo como o volume se atenua à distância.Este método retorna uma tabela vazia se a curva de atenuação padrão de distância estiver sendo usada.


Devolução

GetInputPins


Devolução

GetInteractingListeners

Instances

Devolução

Instances

GetOutputPins


Devolução

SetAngleAttenuation

()

Define uma curva de volume sobre ângulo que afeta como alto um AudioListener ouvirá o AudioEmitter , com base no ângulo entre eles e o LookVector associado ao AudioEmitter .

A curva é representada por chaves de mapeamento de tabela para valores de volume.As chaves são esperadas ser números únicos entre 0 e 180 (inclusivo), enquanto os valores são esperados ser números entre 0 e 1 (inclusivo).Tabelas que contêm até 400 pares de chave-valor são suportadas.

O volume do AudioEmitter da perspectiva de um AudioListener em um ângulo a é determinado pela interpolação linear entre os níveis de volume para os pontos na curva cujos valores de ângulo estão diretamente acima e abaixo de a .Se não há nenhum ponto abaixo de a ou nenhum ponto acima de a, o nível de volume do outro ponto é escolhido.Basicamente, a curva é uma sequência de pontos conectados por linhas retas, e além de seus pontos de extremidade esquerdo e direito, a curva se estende para fora em seus respectivos níveis de volume.

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

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

Parâmetros

curve: Dictionary
Valor Padrão: ""

Devolução

()

SetDistanceAttenuation

()

Define uma curva de volume a distância que afeta como alto um AudioListener ouvirá o AudioEmitter, com base na distância entre eles.

A curva é representada por chaves de mapeamento de tabela para valores de volume.As chaves são esperadas ser números únicos maiores que ou igual a 0, enquanto os valores são esperados ser números entre 0 e 1 (inclusivo).Tabelas que contêm até 400 pares de chave-valor são suportadas.

O volume do AudioEmitter da perspectiva de um AudioListener a uma distância d é determinado pela interpolação linear entre os níveis de volume para os pontos na curva cujos valores de distância estão diretamente acima e abaixo de d .Se não há nenhum ponto abaixo de d ou nenhum ponto acima de d, o nível de volume do outro ponto é escolhido.Basicamente, a curva é uma sequência de pontos conectados por linhas retas, e além de seus pontos de extremidade esquerda e direita, a curva se estende infinitamente para fora em seus respectivos níveis de volume.

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

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

Parâmetros

curve: Dictionary
Valor Padrão: ""

Devolução

()

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

WiringChanged

Evento que dispara depois que um Wire se conecta ou se desconecta, e que Wire está agora conectado ou foi previamente conectado a um pino no AudioEmitter e a alguma outra instância viável.

Parâmetros

connected: boolean

Se a instância se conectou ou desconectou.

pin: string

O pino no AudioEmitter que os alvos Wire alvo.

wire: Wire

O Wire entre a AudioEmitter e a outra instância.

instance: Instance

A outra instância que está ou esteve conectada através do Wire .