AudioEmitter

顯示已棄用項目

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

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 之間的關係。

此屬性內部,並且無法由腳本存取;它存在於支援複製。請參閱 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> (包括) 之間的獨特數字。桌

AudioEmitter 的視角來看, AudioListener 的音量由直線縮放決定,其音量等級是由 a

此音量將與所有其他減少曲線的音量乘以以取得最終音量。

如果桌子是空的或 nilAudioEmitter 預設使用角度減少曲線,使用 1 的常量音量值。

參數

curve: Dictionary

返回

void

SetDistanceAttenuation

void

設定一個音量與距離曲線,會影響 AudioListener 會聽到 AudioEmitter 的音量,因為它們之間的距離。

曲線由表達為音量值的距離鍵表示。鍵是大於或等於 0 的整數,而值是大於或等於 1 (包括) 的整數。包含最多 400 個鍵值的桌子是支持的。

AudioEmitter 的視角來看,在距離 AudioListener 的距離 d 的距離值是直接在 1>d</

此音量將與所有其他減少曲線的音量乘以以取得最終音量。

如果桌子是空的或 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

活動