AudioEmitter
*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
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
Représente la façon dont le volume perçu du son émis change en fonction de l'angle entre un AudioListener et le LookVector associé au AudioEmitter.
Contrôles qui sont capables d'entendre ceci .
Représente la façon dont le volume perçu du son émis change à mesure que la distance entre un AudioListener et le AudioEmitter augmente.
Méthodes
Obtient la courbe d'atténuation d'angle que l'élément AudioEmitter utilise, ou une table vide si elle utilise la courbe par défaut.
Renvoie un tableau de Wires qui sont connectés au épinglerspécifié.
Obtient la courbe d'atténuation de distance que l'élément AudioEmitter utilise, ou une table vide si elle utilise la courbe par défaut.
Définit la courbe d'atténuation de l'angle que le AudioEmitter devrait utiliser, ou utilise une courbe constante de volume 1 si aucune n'est fournie.
Définit la courbe d'atténuation de distance que le AudioEmitter doit utiliser, ou utilise une courbe d'atténuation inversée si aucune n'est fournie.
Évènements
Se déclenche lorsqu'une autre instance est connectée ou déconnectée du AudioEmitter via un Wire .
Propriétés
AngleAttenuation
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
Si un AudioEmitter et un AudioListener partagent un groupe d'interaction, le récepteur est capable d'entendre l'émetteur.
DistanceAttenuation
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.
SimulationFidelity
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.
GetConnectedWires
Retourne un ensemble d'Wires qui sont connectés au épinglerspécifié. AudioEmitter a un épingler« Entrée ».
Paramètres
Retours
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
GetInteractingListeners
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
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
Retours
Échantillons de code
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
É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
Si l'instance s'est connectée ou déconnectée.
L'épingle sur le AudioEmitter que les cibles Wire .
Le Wire entre la AudioEmitter et l'autre instance.