AudioEmitter

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

AudioEmitter 向世界发送音频流。它提供一个单个 输入 接口,可由一个或多个 Wires 连接。任何连接到 AudioEmitter 的流都会从发射者的父位置发送到世界上。如果父辈是 AttachmentCameraPVInstance,父辈的世界位置将被使用。如果父级不是这些类别之一,那么 AudioEmitter 实际上是静默的。

AudioEmittersAudioListeners 听到,以实现 3D 空间定位。

代码示例

一次从多个 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()

概要

属性

方法

活动

属性

AngleAttenuation

BinaryString
Roblox 安全性
读取并联

表示影响 AudioListener 如何听到 AudioEmitter 的音量的角度曲线,其基于他们之间的角度和与 LookVector 相关的 AudioEmitter

该属性是内部的,不能通过脚本访问;它存在于支持复制的目的。见 SetAngleAttenuation() 获取使用详情。

AudioInteractionGroup

读取并联

如果 AudioEmitterAudioListener 共享一个交互组,那么收听器可以听到发射者。

DistanceAttenuation

BinaryString
Roblox 安全性
读取并联

代表一个影响 AudioListener 如何响亮地听到 AudioEmitter 的距离曲线,根据它们之间的距离。

该属性是内部的,不能通过脚本访问;它存在于支持复制的目的。见 SetDistanceAttenuation() 获取使用详情。

读取并联

控制音频模拟的细节程度对于此 AudioEmitter ,类似于 MeshPart.CollisionFidelityMeshPart.RenderFidelity

AudioEmittersAudioListeners ,不同意必要的细节程度的选项将使用较少的细节程度。

方法

GetAngleAttenuation

返回一个表映射角度到音量。钥匙是在 0180 之间的数字(包括在内),而值是在 01 之间的数字(包括在内),用于描述音量会随着方向而减弱。该方法如果默认角度减衰曲线正在使用,将返回一个空表。


返回

表映射角度到音量,如上所述。

GetAudibilityFor

计算发射器对特定 AudioListener 的可听程度。最终得到的音量,从 01 ,占有发射者和接收者的距离和角度衰减。

参数

listener: AudioListener
默认值:""

返回

GetConnectedWires

Instances

返回连接到指定端口的 Wires 阵列。 AudioEmitter 有一个 "输入" 端口。

参数

pin: string
默认值:""

返回

Instances

GetDistanceAttenuation

返回表映射距离到卷。钥匙是大于或等于 0 的数字,而值是介于 0 和 1(包括在内)之间的数字,描述音量在距离上减弱的方式。该方法如果使用默认距离衰减曲线,将返回一个空表。


返回

GetInputPins


返回

GetInteractingListeners

Instances

返回一个由 AudioListeners 共享 AudioInteractionGroup 与发射者的阵列。


返回

Instances

GetOutputPins


返回

SetAngleAttenuation

()

设置一个音量对角曲线,影响 AudioListener 如何听到 AudioEmitter 的声音,基于他们之间的角度和与 LookVector 相关的 AudioEmitter

曲线由表映射角键表示到音量值。钥匙应该是 0180 (包括在内)之间的唯一数字,而值应该是 01 (包括在内)之间的数字。支持包含最多 400 个键值对的表。

从角度来看, 的音量由线性插补确定,其中曲线上的点的角度值直接高于或低于 。如果没有点低于 a 或没有点高于 a ,则选择另一点的音量级别。本质上,曲线是由直线连接的一系列点,其左端和右端端点之外,曲线在各自的音量水平上向外延伸。

该卷将与所有其他衰减曲线的卷积乘以以获得最终可听度。

如果表是空的或 , 那么默认使用角度减衰曲线的恒定体积值 。

参数

curve: Dictionary
默认值:""

返回

()

SetDistanceAttenuation

()

设置一个影响 AudioListener 如何听到 AudioEmitter 的音量-在距离上的曲线,基于它们之间的距离。

曲线由表映射距离键与音量值映射表代表。钥匙应为大于或等于 0 的独特数字,而值应为 0 到 1(包括在内)之间的数字。支持包含最多 400 个键值对的表。

从远处看,曲线上的点的音量由线性插补决定,其距离值直接高于或低于 。如果没有点低于 d 或没有点高于 d ,则选择另一点的音量级别。本质上,曲线是由直线连接的一系列点,其左右端点之外,曲线在各自的音量水平上无限延伸。

该卷将与所有其他衰减曲线的卷积乘以以获得最终可听度。

如果表是空的或 nil , 那么 AudioEmitter 默认使用由反方形法则决定的距离衰减曲线。

参数

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 格内,收听者在满音量下听到这个发射器
curve[100] = 0.4 -- 在 100 格的距离处,收听者在 40% 音量下听到这个发射器
curve[300] = 0 -- 在任何距离超过 300 格的情况下,收听者无法听到这个发射器
emitter:SetDistanceAttenuation(curve)
-- 从旧的声音实现复制渐变曲线
-- 没有新的音频 API 的默认声音范围为 7 到 80 格
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

Wire 连接或断开后发生的事件,该 Wire 现在或之前已连接到 AudioEmitter 上的某个引脚或其他可连接的实例。

参数

connected: boolean

实例是否连接或断开。

pin: string

AudioEmitter 上的按钮,用于 Wire 目标。

wire: Wire

之间的 Wire 和其他实例之间的 AudioEmitter

instance: Instance

连接到 Wire 通过的另一个实例。