AudioListener 从其周围的 AudioEmitters 记录音频流在 3D 世界中。它提供一个单一的 Output 引脚,可以通过 Wires 连接到其他引脚。 如果父对象是 Attachment、Camera 或 PVInstance, 将使用父对象的世界 CFrame 进行监听。如果父对象 不是这些类之一,则 AudioListener 实际上听不见任何声音。
代码示例
local listener = Instance.new("AudioListener")
local output = Instance.new("AudioDeviceOutput")
local wire = Instance.new("Wire")
listener.Parent = workspace.Camera
wire.Parent = listener
output.Parent = wire
wire.SourceInstance = listener
wire.TargetInstance = output
概要
属性
表示发出声响的感知音量如何根据 AudioEmitter 和 LookVector 之间的角度变化而变化。
控制哪些 AudioEmitters 对此 AudioListener 可听。
表示发出声响的感知音量如何随着 AudioEmitters 和 AudioListener 之间距离的增加而变化。
控制此 AudioListener 的音频模拟应有多详细。
方法
获取 AudioListener 使用的角度衰减曲线, 如果使用默认曲线,则返回空表。
计算 AudioEmitter 对此监听器的可听度。
返回连接到指定引脚的 Wires 数组。
获取 AudioListener 使用的距离衰减曲线, 或在使用默认曲线的情况下返回空表。
列出此监听器能够听到的所有 AudioEmitters。
设置 AudioListener 应使用的角度衰减曲线, 如果未提供则使用常量音量 1 的曲线。
设置 AudioListener 应使用的距离衰减曲线, 如果未提供则使用反向衰减曲线。
活动
当另一个实例通过 Wire 连接或断开与 AudioListener 连接时触发。
属性
AngleAttenuation
表示一个音量与角度的曲线,影响 AudioListener 听到的 AudioEmitter 的音量,基于它们之间的角度 和与 AudioListener 相关联的 LookVector。
此属性为内部属性,脚本无法访问;它存在是为了 支持复制。详见 SetAngleAttenuation() 的使用细节。
DistanceAttenuation
表示一个音量与距离的曲线,影响 AudioListener 听到任何 AudioEmitters 的音量,基于它们之间的 距离。
此属性为内部属性,脚本无法访问;它存在是为了 支持复制。详见 SetDistanceAttenuation() 的使用细节。
SimulationFidelity
控制此 AudioListener 的音频模拟应有多详细,类似于 MeshPart.CollisionFidelity 或 MeshPart.RenderFidelity。
AudioListeners 和 AudioEmitters 对必要的细节级别的观点不一致时,将使用较少详细的选项。
方法
GetAngleAttenuation
返回一个映射角度到音量的表。键是 0 到 180 之间的数字(包含),而值是 0 到 1 之间的数字(包含),描述音量如何根据方向衰减。如果使用默认角度 衰减曲线,此方法返回空表。
返回
映射角度到音量的表,如上述所述。
GetDistanceAttenuation
返回一个映射距离到音量的表。键是大于或等于 0 的数字, 而值是 0 到 1 之间的数字(包含),描述音量如何根据距离衰减。如果使用默认距离 衰减曲线,此方法返回空表。
返回
SetAngleAttenuation
设置一个音量与角度的曲线,影响 AudioListener 将如何听到 AudioEmitter,基于它们之间的角度 和与 AudioListener 相关联的 LookVector。
曲线由一个映射角度键到音量值的表表示。键应为唯一的数字, 介于 0 到 180 之间(包含),而值应为介于 0 到 1 之间的数字(包含)。 支持包含最多 400 个键值对的表。
从 AudioListener 在角度 a 处看 AudioEmitter 的音量由 对曲线中直接位于 a 的上下两点的音量级别进行线性插值决定。 如果没有位于 a 下面的点或没有位于 a 上面的点,则选择另一个点的音量级别。 本质上,曲线是一系列用直线连接的点,并且在其左侧和右侧端点的外部,该曲线将分别沿其音量级别向外延伸。
此音量将与所有其他衰减曲线(包括发送的 AudioEmitter 上的曲线)中的音量相乘以获得最终的可听度。
如果表为空或 nil,则 AudioEmitter 默认使用 常量音量值为 1 的角度衰减曲线。
参数
返回
SetDistanceAttenuation
设置一个音量与距离的曲线,影响 AudioListener 将如何听到任何 AudioEmitters, 基于它们之间的距离。
曲线由一个映射距离键到音量值的表表示。键应为唯一的数字, 大于或等于 0,而值应为介于 0 到 1 之间的数字(包含)。 支持包含最多 400 个键值对的表。
从 AudioListener 在距离 d 处看 AudioEmitter 的音量由 对曲线中直接位于 d 上下两点的音量级别进行线性插值决定。 如果没有位于 d 下面的点或没有位于 d 上面的点,则选择另一个点的音量级别。 本质上,曲线是一系列用直线连接的点,并且在其左侧和右侧端点的外部,该曲线将无限向外延伸, 延伸到各自的音量级别。
此音量将与所有其他衰减曲线中的音量相乘(包括发送的 AudioEmitter 上的曲线)以获得最终可听度。
如果表为空或 nil,则 AudioListener 默认应用 在任何地方均为常量音量 1。
参数
返回
活动
WiringChanged
在 Wire 连接或断开后触发事件, 并且该 Wire 现在或以前连接到 AudioListener 的引脚 和某个其他可接线实例。