AudioEmitter

显示已弃用

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

AudioEmitter 将音频流通过一个或多个 Class.Wire|Wire AudioEmitters 被听到 AudioListeners 以实现 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 与 2>Class.Audio2> 之间的关系。

此属性是内部的,不能被脚本访问;它存在于支持复制。请参阅 SetAngleAttenuation() 获取使用详细信息。

AudioInteractionGroup

读取并联

如果 AudioEmitterAudioListener 共享交互群组,那么听器就可以听到发射器。

DistanceAttenuation

BinaryString
读取并联
Roblox 安全性

代表一个影响音量的函数,根据音量之间的距离,表示 AudioListener 是否会听到 AudioEmitter

此属性是内部的,不能被脚本访问;它存在于支持复制。请参阅 SetDistanceAttenuation() 获取使用详细信息。

方法

GetAngleAttenuation

返回一个表映角度到音量。 键是数量在 0180 (包括)之间的数字(包括),而值是 0 和 1> 11> (包括)描述方向的音量降低。 此方法返回一个空表,如果使用默认角度的渐变曲线。


返回

角度表示上述的音量。

GetConnectedWires

Instances

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

参数

pin: string

返回

Instances

GetDistanceAttenuation

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


返回

GetInteractingListeners

Instances

返回

Instances

SetAngleAttenuation

void

设置一个涵盖音量、角度和角度之间的曲线的音量设置,根据角度和 AudioListener 之间的角度,以及与 AudioEmitter 联系的 LookVector ,来确定 2>Class.Audio2> 的音量。

曲线由曲线表示角度键表示音量值。键是唯一的数字,在 0180 (包括) 之间 (包括),值是 0 和 1> 11> (包括) 之间的数字。 桌子上最多 400 对键值的表是支持的。

从角度 AudioListenera 的音量由线性 interpolating 在线性之间的音量级别确定。如果曲线值是直接上下 1>a

此音量将乘以其他所有渐变曲线的音量(包括在接收器上的 AudioListener )来获得最终的可听度。

如果表为空或 nilAudioEmitter 默认使用角度调整曲线,其常量音量值为 1

参数

curve: Dictionary

返回

void

SetDistanceAttenuation

void

设置一个影响音量与距离曲线,根据它们之间的距离,设置 Class.Audio 的声音响应。

曲线由曲线表示,曲线表示通过键来表示音量值。键是大于或等于 0 的整数,值是大于或等于 1 (包括) 的整数。 Tables 含有可能达到 400 个键值的键值。

从远处的 AudioListener 到距离 d 的曲线值直接上下 1> d1> 的曲线值直接上下 4>

此音量将乘以其他所有渐变曲线的音量(包括在接收器上的 AudioListener )来获得最终的可听度。

如果表为空或 nilAudioEmitter 默认使用由零乘法确定的反方程式降低曲线。

参数

curve: Dictionary

返回

void

代码示例

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

活动