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.
É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
AudioInteractionGroup
DistanceAttenuation
BinaryString
SimulationFidelity
Méthodes
GetInteractingListeners
Instances
Retours
Instances
SetDistanceAttenuation
()
Paramètres
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