AudioFilter 調整音頻流的頻率內容。它提供一個 輸入 彈簧和一個 輸出 彈簧,可以由 Wires 。AudioFilter 使用其 FilterType , Gain , 及 Q 屬性來決定在特定切割 Frequency 周圍要做什麼。
範例程式碼
音頻過濾器可用於變更音頻流的頻率內容。在這個例子中,使用音頻過濾器使音頻輸出器輸出較為沉默,當有一堵牆在它和音頻收聽器之間時。
發射器過濾
-- 這假設工作區包含一個含有音效輸出器和音樂播放器的零件,以及攝影機具有音效收聽器
local RunService = game:GetService("RunService")
local part: BasePart = workspace.Part
local camera: Camera = workspace.CurrentCamera
local audioPlayer: AudioPlayer = part.AudioPlayer
local audioEmitter: AudioEmitter = part.AudioEmitter
local audioListener: AudioListener = camera.AudioListener
local raycastParams = RaycastParams.new()
raycastParams.FilterDescendantsInstances = { audioEmitter.Parent }
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
-- 創建新的音頻過濾器
local filter: AudioFilter = Instance.new("AudioFilter")
filter.FilterType = Enum.AudioFilterType.Lowpass12dB
filter.Frequency = 22000
filter.Q = math.sqrt(2) / 2 -- 這個 Q 值會產生 12dB 坡度類型的平坦低通過濾器
filter.Parent = part
-- 將音頻過濾器放在播放器和發射器之間
local function wireTo(source: Instance, target: Instance): Wire
local wire = Instance.new("Wire")
wire.SourceInstance = source
wire.TargetInstance = target
wire.Parent = target
end
wireTo(audioPlayer, filter)
wireTo(filter, audioEmitter)
-- 根據發射者和接收者的位置更新過濾器
RunService.Heartbeat:Connect(function()
local emitterPos: Vector3 = part.Position
local listenerPos: Vector3 = camera.CFrame.Position
local raycastResult = workspace:Raycast(emitterPos, (listenerPos - emitterPos), raycastParams)
filter.Frequency = if raycastResult then 500 else 22000
end)
概要
屬性
是否有音頻流被此效果忽略。
過濾篩選器所代表的帶的曲線類型。
過濾器周圍運作的中心頻率。
對於尖峰和置物過濾器,控制音量增加或減少。
對於峰值、低通、高通、帶通和不同步過濾器,控制選擇性或諧振。
方法
返回連接到指定頂置頂的一個 Wires 陣列。
返回篩選器在指定頻率上的強度反應。
活動
當另一個實例連接到或與 AudioFilter 通過 Wire 分開時,發生火災。
屬性
Editor
用於判斷過濾篩選器所代表的曲線傾斜或諧振值的質量值。只適用於當 FilterType 是 Peak 、 Lowpass[x]dB 、 Highpass[x]dB 、 Bandpass 或 Notch 時。範圍為 0.1 到 10。
對於 FilterType 值的 Lowpass12dB 和 Highpass12dB , Q 值的 sqrt(2) / 2 或 0.707 對應於 12dB/每十音頻坡度的平面過濾器。
方法
活動
WiringChanged
在 Wire 連接或解除連接後發生的事件,該 Wire 現在或之前已連接到 AudioFilter 上的某個彈片或其他可連接的個體、實例。