AudioEmitter

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

AudioEmitter émet des flux audio dans le monde.Il fournit un seul entrée bouton qui peut être connecté à un ou plusieurs Wires .Tous les flux connectés à un AudioEmitter sont diffusés dans le monde à partir de la position du parent de l'émetteur.Si le parent est un Attachment , Camera ou PVInstance , la position mondiale du parent sera utilisée.Si le parent n'est pas l'une de ces classes, le AudioEmitter est effectivement silencieux.

AudioEmitters sont entendus par AudioListeners afin d'implémenter la spatialisation 3D.

Échantillons de code

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

Résumé

Propriétés

Méthodes

Évènements

Propriétés

AngleAttenuation

BinaryString
Sécurité Roblox
Lecture parallèle

Représente une courbe volume-sur-angle qui affecte la façon dont un AudioListener entendra fortement le AudioEmitter , en fonction de l'angle entre eux et du LookVector associé au AudioEmitter .

Cette propriété est interne et ne peut pas être accessible par des scripts ; elle existe pour soutenir la réplication. Voir SetAngleAttenuation() pour les détails d'utilisation.

AudioInteractionGroup

Lecture parallèle

Si un AudioEmitter et un AudioListener partagent un groupe d'interaction, le récepteur est capable d'entendre l'émetteur.

DistanceAttenuation

BinaryString
Sécurité Roblox
Lecture parallèle

Représente une courbe de volume à distance qui affecte la façon dont un AudioListener entendra fortement le AudioEmitter, en fonction de la distance entre eux.

Cette propriété est interne et ne peut pas être accessible par des scripts ; elle existe pour soutenir la réplication. Voir SetDistanceAttenuation() pour les détails d'utilisation.

Lecture parallèle

Contrôle à quel point la simulation audio devrait être détaillée pour ce AudioEmitter , similaire à MeshPart.CollisionFidelity ou MeshPart.RenderFidelity .

AudioEmitters et AudioListeners qui ne sont pas d'accord sur le niveau de détail nécessaire utiliseront l'option moins détaillée.

Méthodes

GetAngleAttenuation

Renvoie un angle de mapping de table au volume.Les clés sont des nombres entre 0 et 180 (inclus), tandis que les valeurs sont des nombres entre 0 et 1 (inclus) décrivant comment le volume s'atténue en fonction de la direction.Cette méthode renvoie une table vide si la courbe d'atténuation de l'angle par défaut est utilisée.


Retours

Angle de mapping de table vers le volume, comme décrit ci-dessus.

GetAudibilityFor

Calcule à quel point cet émetteur est audible pour un particular AudioListener .Le volume résultant, allant de 0 à 1, compte pour l'atténuation de la distance et de l'angle sur l'émetteur et le récepteur.

Paramètres

listener: AudioListener
Valeur par défaut : ""

Retours

GetConnectedWires

Instances

Retourne un ensemble d'Wires qui sont connectés au pin spécifié. AudioEmitter a un pin « Entrée ».

Paramètres

pin: string
Valeur par défaut : ""

Retours

Instances

GetDistanceAttenuation

Renvoie une distance de mapping de table vers le volume.Les clés sont des nombres supérieurs ou égaux à 0, tandis que les valeurs sont des nombres entre 0 et 1 (inclus) décrivant comment le volume s'atténue à distance.Cette méthode renvoie une table vide si la courbe de réduction de distance par défaut est utilisée.


Retours

GetInputPins


Retours

GetInteractingListeners

Instances

Renvoie un ensemble d'AudioListeners qui partagent un AudioInteractionGroup avec l'émetteur.


Retours

Instances

GetOutputPins


Retours

SetAngleAttenuation

()

Définit une courbe de volume par rapport à l'angle qui affecte la façon dont un AudioListener entendra fortement le AudioEmitter , en fonction de l'angle entre eux et du LookVector associé au AudioEmitter .

La courbe est représentée par des clés de mapping de table pour les valeurs de volume.Les clés sont attendues comme des nombres uniques entre 0 et 180 (inclus), tandis que les valeurs sont attendues comme des nombres entre 0 et 1 (inclus).Les tables contenant jusqu'à 400 paires clé-valeur sont prises en charge.

Le volume du AudioEmitter de la perspective d'un AudioListener à un angle a est déterminé par l'interpolation linéaire entre les niveaux de volume pour les points sur la courbe dont les valeurs d'angle sont directement au-dessus et en dessous de a .S'il n'y a pas de point au-dessous de a ou de point au-dessus de a, le niveau de volume de l'autre point est choisi.Fondamentalement, la courbe est une séquence de points connectés par des lignes droites, et au-delà de ses extrémités gauche et droite, la courbe s'étend vers l'extérieur à leurs niveaux de volume respectifs.

Ce volume sera multiplié par les volumes de toutes les autres courbes d'atténuation (y compris ceux sur la réception AudioListener ) pour obtenir l'audibilité finale.

Si la table est vide ou nil , le AudioEmitter défaut utilise une courbe d'atténuation d'angle avec la valeur de volume constant de 1 .

Paramètres

curve: Dictionary
Valeur par défaut : ""

Retours

()

SetDistanceAttenuation

()

Définit une courbe de volume à distance qui affecte la façon dont un AudioListener entendra fortement le AudioEmitter, en fonction de la distance entre eux.

La courbe est représentée par des clés de distance de mapping de table vers des valeurs de volume.Les clés sont attendues comme des nombres uniques supérieurs ou égaux à 0, tandis que les valeurs sont attendues comme des nombres entre 0 et 1 (inclusifs).Les tables contenant jusqu'à 400 paires clé-valeur sont prises en charge.

Le volume du AudioEmitter de la perspective d'un AudioListener à une distance d est déterminé par l'interpolation linéaire entre les niveaux de volume pour les points sur la courbe dont les valeurs de distance sont directement au-dessus et en dessous de d .S'il n'y a pas de point au-dessous de d ou de point au-dessus de d, le niveau de volume de l'autre point est choisi.Fondamentalement, la courbe est une séquence de points connectés par des lignes droites, et au-delà de ses extrémités gauche et droite, la courbe s'étend à l'infini vers l'extérieur à leur niveau de volume respectif.

Ce volume sera multiplié par les volumes de toutes les autres courbes d'atténuation (y compris ceux sur la réception AudioListener ) pour obtenir l'audibilité finale.

Si la table est vide ou nil , le AudioEmitter défaut utilise une courbe d'atténuation de distance déterminée par la loi inverse-carré.

Paramètres

curve: Dictionary
Valeur par défaut : ""

Retours

()

Échantillons de code

Atténuation de distance personnalisée

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 -- À une distance de 10 studs, les écouteurs entendent cet émetteur à plein volume
curve[100] = 0.4 -- À une distance de 100 studs, les écouteurs entendent cet émetteur à 40 % de volume
curve[300] = 0 -- À n'importe quelle distance supérieure à 300 studs, les écouteurs ne peuvent pas entendre cet émetteur
emitter:SetDistanceAttenuation(curve)
-- Reproduire la courbe de réduction à partir de l'ancienne implémentation de la voix
-- La voix par défaut sans la nouvelle API audio utilise un recul quadratique allant de 7 à 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

Évènements

WiringChanged

Événement qui se déclenche après qu'un Wire devienne connecté ou déconnecté, et que Wire soit maintenant ou ait été précédemment connecté à un bouton sur le AudioEmitter et à une autre instance wirable.

Paramètres

connected: boolean

Si l'instance s'est connectée ou déconnectée.

pin: string

L'épingle sur le AudioEmitter que les cibles Wire .

wire: Wire

Le Wire entre la AudioEmitter et l'autre instance.

instance: Instance

L'autre instance qui est ou était connectée via le Wire.