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 pin

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

Propriétés

AngleAttenuation

BinaryString
Sécurité Roblox
Lecture parallèle

Représente une courbe de volume au-dessus de l'angle qui affecte le volume d'un AudioListener , en fonction de l'angle entre eux et le AudioEmitter associé au LookVector .

Cette propriété est interne et ne peut pas être utilisée par les scripts ; elle existe pour prendre en charge la réplication. Voir SetAngleAttenuation() pour plus de détails d'utilisation.

AudioInteractionGroup

Lecture parallèle

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

DistanceAttenuation

BinaryString
Sécurité Roblox
Lecture parallèle

Représente une courbe de volume-sur-距離 qui affecte le volume d'une AudioListener , basé sur la distance entre eux.

Cette propriété est interne et ne peut pas être utilisée par les scripts ; elle existe pour prendre en charge la réplication. Voir SetDistanceAttenuation() pour plus de détails d'utilisation.

Méthodes

GetAngleAttenuation

Renvoie un angle de mise en relation de table au volume. Les clés sont des numéros entre 0 et 180 (inclusif), alors que les valeurs sont des numéros entre 0 et 1> 11> (inclusif) décrivant comment la mise en relation du volume varie en fonction de la direction. Ce méthode renvoie une table vide si la courbe d'angle par défaut est utilis


Retours

Angle de mise à l'échelle de la table pour le volume, comme décrit ci-dessus.

GetConnectedWires

Instances

Retourne un tableau de Wires qui sont connectés à l'écrou spécifié. AudioEmitter a un seul épingler« entrée ».

Paramètres

pin: string

Retours

Instances

GetDistanceAttenuation

Renvoie une distance de table de mise en volume. Les clés sont des nombres supérieurs ou égaux à 0, tandis que les valeurs sont des nombres entre 0 et 1 (y compris) décrivant comment le volume s'atténue au fil du temps. Cette méthode renvoie une table vide si la courbe d'atténuation de distance par défaut est utilisée.


Retours

GetInteractingListeners

Instances

Retours

Instances

SetAngleAttenuation

void

Définit une courbe de volume-over-angle qui affecte le volume d'une AudioListener , basé sur l'angle entre eux et le AudioEmitter associé avec le LookVector .

La courbe est représentée par une table de mise en relation des angles des clés des valeurs de volume. Les clés sont attendues d'être des numéros uniques entre 0 et 180 (inclusif), alors que les valeurs sont attendues d'être des numéros entre 0 et 1> 11> (inclusif). Les tables contenant jusqu'à 400 paires de clés de vale

Le volume du AudioEmitter à partir de la perspective d'un AudioListener à un angle a est déterminé par l'interpolation linéaire entre les niveaux de volume pour les

Ce volume sera multiplié par le volume des autres courbes d'atténération (y compris ceux sur la réception AudioListener ) pour obtenir la finalité d'audibilité.

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

Paramètres

curve: Dictionary

Retours

void

SetDistanceAttenuation

void

Définit une courbe de volume-over-Distance qui affecte la force d'un AudioListener à l'oreille, en fonction de la distance entre eux.

La courbe est représentée par des clés de table de distance de mise en relation avec les valeurs de volume. Les clés sont attendues d'être des numéros uniques supérieurs à ou égaux à 0, tandis que les valeurs sont attendues d'être des nombres entre 0 et 1 (y compris). Les tables contenant jusqu'à 400 paires de clés de valeur sont prises en charge.

Le volume du AudioEmitter à partir de la perspective d'un AudioListener à une distance d est déterminé par l'interpolation linéaire entre les niveaux de volume

Ce volume sera multiplié par le volume des autres courbes d'atténération (y compris ceux sur la réception AudioListener ) pour obtenir la finalité d'audibilité.

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

Paramètres

curve: Dictionary

Retours

void

Échantillons de code

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

Évènements