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

參數

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

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

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

參數

curve: Dictionary
預設值:""

返回

()

SetDistanceAttenuation

()

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

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

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

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

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

之間的 WireAudioEmitter 和其他實個體、實例之間。

instance: Instance

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