AudioEmitter

显示已弃用

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

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

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

代码示例

Playing one asset from multiple 3d locations at once

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() 获取使用详情。

读取并联

方法

GetAngleAttenuation

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


返回

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

GetAudibilityFor

参数

listener: AudioListener
默认值:""

返回

GetConnectedWires

Instances

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

参数

pin: string
默认值:""

返回

Instances

GetDistanceAttenuation

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


返回

GetInputPins


返回

GetInteractingListeners

Instances

返回

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
默认值:""

返回

()

代码示例

Custom Distance Attenuation

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 -- Within a distance of 10 studs, listeners hear this emitter at full volume
curve[100] = 0.4 -- At a distance of 100 studs, listeners hear this emitter at 40% volume
curve[300] = 0 -- At any distance farther than 300 studs, listeners cannot hear this emitter
emitter:SetDistanceAttenuation(curve)
-- Replicate the rolloff curve from the old voice implementation
-- Default voice without the new audio API uses quadratic rolloff ranging from 7 to 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

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

参数

connected: boolean

实例是否连接或断开。

pin: string

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

wire: Wire

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

instance: Instance

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