學習
引擎類別
AudioEmitter

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡


範例程式碼
一次從多個 3D 位置播放一個資產
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()

API 參考
屬性
AcousticSimulationEnabled
平行讀取
功能: Audio
AudioEmitter.AcousticSimulationEnabled:boolean

AngleAttenuation
Roblox 安全性
平行讀取
功能: Audio
AudioEmitter.AngleAttenuation:Flyweight

AudioInteractionGroup
平行讀取
功能: Audio
AudioEmitter.AudioInteractionGroup:string

DistanceAttenuation
Roblox 安全性
平行讀取
功能: Audio
AudioEmitter.DistanceAttenuation:Flyweight

PositionInstance
平行讀取
功能: Audio
AudioEmitter.PositionInstance:Instance

PositionType
平行讀取
功能: Audio
AudioEmitter.PositionType:Enum.EmitterPositionType

SimulationFidelity
已棄用

方法
GetAngleAttenuation
功能: Audio
AudioEmitter:GetAngleAttenuation():Dictionary

GetAudibilityFor
功能: Audio
AudioEmitter:GetAudibilityFor(listener:AudioListener):number
參數
listener:AudioListener
返回

GetConnectedWires
功能: Audio
AudioEmitter:GetConnectedWires(pin:string):{Wire}
參數
pin:string
返回

GetDistanceAttenuation
功能: Audio
AudioEmitter:GetDistanceAttenuation():Dictionary

GetInputPins
功能: Audio
AudioEmitter:GetInputPins():{any}
返回

GetInteractingListeners
功能: Audio
AudioEmitter:GetInteractingListeners():{AudioListener}

GetOutputPins
功能: Audio
AudioEmitter:GetOutputPins():{any}
返回

SetAngleAttenuation
功能: Audio
AudioEmitter:SetAngleAttenuation(curve:Dictionary):()
參數
返回
()

SetDistanceAttenuation
功能: Audio
AudioEmitter:SetDistanceAttenuation(curve:Dictionary):()
參數
返回
()
範例程式碼
自訂距離衰減
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 -- 在距離 10 studs 內,聽者會以最高音量聽到這個發射器
curve[100] = 0.4 -- 在距離 100 studs 時,聽者會以 40% 音量聽到這個發射器
curve[300] = 0 -- 在任何超過 300 studs 的距離,聽者無法聽到這個發射器
emitter:SetDistanceAttenuation(curve)
-- 從舊版語音實現複製衰減曲線
-- 默認語音不使用新音頻 API 的情況下,衰減範圍為 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

活動
WiringChanged
功能: Audio
AudioEmitter.WiringChanged(
connected:boolean, pin:string, wire:Wire, instance:Instance
參數
connected:boolean
pin:string
wire:Wire
instance:Instance

©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。