AudioEmitter

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

AudioEmitter 向世界發送音頻流。它提供一個單一的 輸入 彎弧,可以由一個或多個 Wires 。任何連接到 AudioEmitter 的任何串流都會從發射者的父親位置傳播到世界上。如果父親是 AttachmentCameraPVInstance,父親的世界位置將被使用。如果父不是這些類別之一,那麼 AudioEmitter 就有效地保持沉默。

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 相關的 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 點,則選擇另一個點的音量等級。本質上,曲線是由直線連接的一系列點,其左端和右端點之外,曲線在各自的音量水平上向外延伸。

這個音量將與所有其他減輕曲線的音量(包括接收端的 AudioListener )乘以以獲得最終的可聽度。

如果表是空或 nil ,則 AudioEmitter 默認使用角度減衰曲線的恆定體積值 1

參數

curve: Dictionary
預設值:""

返回

()

SetDistanceAttenuation

()

設置一個遠程音量曲線,會影響 AudioListener 如何聽到 AudioEmitter 的音量,根據兩者之間的距離。

曲線由表映射距離鍵與音量值代表。鑰匙應為大於或等於 0 的獨特數字,而值應為 0 到 1(包括)之間的數字。支持包含最多 400 個鑰匙值對的表。

從遠處觀察的 的音量由線性插值決定,其中曲線上的點的距離值直接高於或低於 。如果沒有下面的 d 點或沒有上面的 d 點,則選擇另一個點的音量等級。本質上,曲線是由直線連接的一系列點,其左端和右端點之外,曲線在各自的音量水平上無限延伸。

這個音量將與所有其他減輕曲線的音量(包括接收端的 AudioListener )乘以以獲得最終的可聽度。

如果表是空或 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

之間的 WireAudioEmitter 和其他實例之間。

instance: Instance

通過 Wire 連接的另一個實例,或是已連接的實例。