AudioEmitter

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

AudioEmitter emite flujos de audio al mundo.Proporciona un solo puerto de entrada que puede ser conectado por uno o más .Cualquier flujo conectado a un AudioEmitter se transmite al mundo desde la posición del padre del emisor.Si el padre es un Attachment , Camera o PVInstance , se usará la posición mundial del padre.Si el padre no es una de estas clases, el AudioEmitter es efectivamente silencioso.

AudioEmitters se escuchan por AudioListeners para implementar la espacialización 3D.

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

Resumen

Propiedades

Métodos

Eventos

Propiedades

AngleAttenuation

BinaryString
Seguridad de Roblox
Leer paralelo

Representa una curva de volumen sobre ángulo que afecta el volumen con el que un AudioListener escuchará al AudioEmitter , según el ángulo entre ellos y el LookVector asociado con el AudioEmitter .

Esta propiedad es interna y no se puede acceder a ella por medio de scripts; existe para apoyar la replicación. Vea SetAngleAttenuation() para detalles de uso.

AudioInteractionGroup

Leer paralelo

Si un AudioEmitter y un AudioListener comparten un grupo de interacción, entonces el receptor es capaz de escuchar al emisor.

DistanceAttenuation

BinaryString
Seguridad de Roblox
Leer paralelo

Representa una curva de volumen a distancia que afecta la cantidad con la que un AudioListener oirá al AudioEmitter , según la distancia entre ellos.

Esta propiedad es interna y no se puede acceder a ella por medio de scripts; existe para apoyar la replicación. Vea SetDistanceAttenuation() para detalles de uso.

Leer paralelo

Controla qué tan detallada debe ser la simulación de audio para este AudioEmitter, similar a MeshPart.CollisionFidelity o MeshPart.RenderFidelity.

AudioEmitters y AudioListeners que no están de acuerdo con el nivel de detalle necesario usarán la opción menos detallada.

Métodos

GetAngleAttenuation

Devuelve un ángulo de mapeo de tabla al volumen.Las claves son números entre 0 y 180 (inclusivos), mientras que los valores son números entre 0 y 1 (inclusivos) que describen cómo se atenúa el volumen dependiendo de la dirección.Este método devuelve una tabla vacía si se está utilizando la curva de atenuación predeterminada del ángulo.


Devuelve

Angulo de mapeo de tabla al volumen, como se describe anteriormente.

GetAudibilityFor

Calcula cuán audible es este emisor para un determinado AudioListener .El volumen resultante, que va de 0 a 1, representa la atenuación de distancia y ángulo en ambos emisor y receptor.

Parámetros

listener: AudioListener
Valor predeterminado: ""

Devuelve

GetConnectedWires

Instances

Devuelve un array de Wires que están conectados al puerto especificado. AudioEmitter tiene un puerto "Entrada".

Parámetros

pin: string
Valor predeterminado: ""

Devuelve

Instances

GetDistanceAttenuation

Devuelve una distancia de mapeo de tabla a volumen.Las claves son números mayores o iguales a 0, mientras que los valores son números entre 0 y 1 (inclusivos) que describen cómo se atenúa el volumen a través de la distancia.Este método devuelve una tabla vacía si se está utilizando la curva de atenuación predeterminada de distancia.


Devuelve

GetInputPins


Devuelve

GetInteractingListeners

Instances

Devuelve un array de AudioListeners que comparten un AudioInteractionGroup con el emisor.


Devuelve

Instances

GetOutputPins


Devuelve

SetAngleAttenuation

()

Establece una curva de volumen sobre ángulo que afecta el volumen con el que un AudioListener escuchará al AudioEmitter , según el ángulo entre ellos y el LookVector asociado con el AudioEmitter .

La curva se representa con las teclas de mapeo de tabla para ángulos de volumen a valores de volumen.Se espera que las claves sean números únicos entre 0 y 180 (inclusivos), mientras que se espera que los valores sean números entre 0 y 1 (inclusivos).Se admiten tablas que contienen hasta 400 pares de clave-valor.

El volumen del AudioEmitter desde la perspectiva de un AudioListener en un ángulo a se determina al interpolar linealmente entre los niveles de volumen para los puntos de la curva cuyos valores de ángulo están directamente por encima y por debajo de a .Si no hay ningún punto por debajo de a o ningún punto por encima de a, se elige el nivel de volumen del otro punto.Esencialmente, la curva es una secuencia de puntos conectados por líneas rectas, y más allá de sus puntos de extremo izquierdo y derecho, la curva se extiende hacia afuera en sus respectivos niveles de volumen.

Este volumen se multiplicará con los volúmenes de todas las otras curvas de atenuación (incluidas las que están en la recepción AudioListener ) para obtener la audibilidad final.

Si la tabla está vacía o nil , el AudioEmitter predeterminado utiliza una curva de atenuación de ángulo con el valor de volumen constante de 1 .

Parámetros

curve: Dictionary
Valor predeterminado: ""

Devuelve

()

SetDistanceAttenuation

()

Establece una curva de volumen a distancia que afecta cómo fuerte oirá un AudioListener el AudioEmitter , según la distancia entre ellos.

La curva se representa mediante las teclas de distancia de mapeo de una tabla a los valores de volumen.Se espera que las claves sean números únicos mayores o iguales a 0, mientras que los valores se esperan que sean números entre 0 y 1 (inclusivos).Se admiten tablas que contienen hasta 400 pares de clave-valor.

El volumen del AudioEmitter desde la perspectiva de un AudioListener a una distancia d se determina al interpolar linealmente entre los niveles de volumen para los puntos de la curva cuyos valores de distancia están directamente por encima y por debajo de d .Si no hay ningún punto por debajo de d o ningún punto por encima de d, se elige el nivel de volumen del otro punto.Esencialmente, la curva es una secuencia de puntos conectados por líneas rectas, y más allá de sus puntos de extremo izquierdo y derecho, la curva se extiende hacia afuera infinitamente en sus respectivos niveles de volumen.

Este volumen se multiplicará con los volúmenes de todas las otras curvas de atenuación (incluidas las que están en la recepción AudioListener ) para obtener la audibilidad final.

Si la tabla está vacía o nil , el AudioEmitter predeterminado utiliza una curva de atenuación de distancia determinada por la ley inversa cuadrada.

Parámetros

curve: Dictionary
Valor predeterminado: ""

Devuelve

()

Muestras de código

Atenuación de distancia personalizada

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 -- Dentro de una distancia de 10 studs, los receptores escuchan a este emisor a volumen completo
curve[100] = 0.4 -- A una distancia de 100 studs, los receptores escuchan a este emisor a 40% de volumen
curve[300] = 0 -- A cualquier distancia mayor a 300 metros, los receptores no pueden escuchar este emisor
emitter:SetDistanceAttenuation(curve)
-- Replicar la curva de desaparición de la antigua implementación de voz
-- La voz predeterminada sin la nueva API de audio utiliza una reducción cuadrática que va de 7 a 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 se activa después de que un Wire se conecte o se desconecte, y que Wire ahora está conectado o fue previamente conectado a un puerto en el AudioEmitter y a alguna otra instancia inalámbrica.

Parámetros

connected: boolean

Si la instancia se conectó o se desconectó.

pin: string

El puerto en el AudioEmitter que los objetivos Wire apuntan.

wire: Wire

El Wire entre la AudioEmitter y la otra instancia.

instance: Instance

La otra instancia que está o estaba conectada a través del Wire .