AudioFilter 调整音频流的频率内容。它提供一个 输入 引脚和一个 输出 引脚,可以通过 Wires 连接。AudioFilter 使用其 FilterType、Gain 和 Q 属性来决定在特定的截止 Frequency 周围该如何处理。
代码示例
AudioFilter 可以用于改变音频流的频率内容。 在这个例子中,AudioFilter 用于使 AudioEmitter 的输出在它和 AudioListener 之间有墙壁时更加模糊。
发射器过滤
-- 这假设工作区包含一个带有 AudioEmitter 和 AudioPlayer 的 Part,并且相机有一个 AudioListener
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
-- 创建一个新的 AudioFilter
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
-- 将 AudioFilter 放在播放器和发射器之间
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 数组。
返回在给定频率下过滤器的幅度响应。
活动
当另一个实例通过 Wire 连接到或从 AudioFilter 断开时触发。
属性
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 的引脚及其他可连接实例。