AudioEmitter
*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
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
Representa cómo cambia el volumen percibido del sonido emitido en función del ángulo entre un AudioListener y el LookVector asociado con el AudioEmitter .
Controles que son capaces de escuchar esto .
Representa cómo cambia el volumen percibido del sonido emitido a medida que aumenta la distancia entre un AudioListener y el AudioEmitter.
Controla qué tan detallada debe ser la simulación de audio para este AudioEmitter .
Métodos
Obtiene la curva de atenuación de ángulo que el AudioEmitter está utilizando, o una tabla vacía si está utilizando la curva predeterminada.
Calcula cuán audible es este emisor para un determinado AudioListener .
Devuelve un array de Wires que están conectados al puerto especificado.
Obtiene la curva de atenuación de distancia que el AudioEmitter está utilizando, o una tabla vacía si está utilizando la curva predeterminada.
Lista todos los AudioListeners que son capaces de escuchar este emisor.
Establece la curva de atenuación de ángulo que el AudioEmitter debería usar, o usa una curva constante de volumen 1 si no se proporciona ninguna.
Establece la curva de atenuación a distancia que el AudioEmitter debe usar, o usa una curva de desaparición inversa si no se proporciona ninguna.
Eventos
Se incendia cuando otra instancia se conecta o se desconecta del AudioEmitter a través de un Wire .
Propiedades
AngleAttenuation
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
Si un AudioEmitter y un AudioListener comparten un grupo de interacción, entonces el receptor es capaz de escuchar al emisor.
DistanceAttenuation
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.
SimulationFidelity
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
Devuelve
GetConnectedWires
Devuelve un array de Wires que están conectados al puerto especificado. AudioEmitter tiene un puerto "Entrada".
Parámetros
Devuelve
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
GetInteractingListeners
Devuelve un array de AudioListeners que comparten un AudioInteractionGroup con el emisor.
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
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
Devuelve
Muestras 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 -- 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
Si la instancia se conectó o se desconectó.
El puerto en el AudioEmitter que los objetivos Wire apuntan.
El Wire entre la AudioEmitter y la otra instancia.