AudioEmitter

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

AudioEmitter mengirimkan aliran audio ke dunia. Ini menyediakan satu at

AudioEmitters di dengar oleh AudioListeners untuk menerapkan 3D spatialization.

Contoh Kode

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()

Rangkuman

Properti

Metode

Properti

AngleAttenuation

BinaryString
Keamanan Roblox
Baca Paralel

Menggambarkan kurva volume-over-angle yang mempengaruhi seberapa keras sebuah AudioListener akan mendengar AudioEmitter, berdasarkan sudut antara mereka dan LookVector yang terkait dengan 2>Class.Audio2> .

Properti ini internal dan tidak dapat diakses oleh skrip; itu ada untuk mendukung replikasi. Lihat SetAngleAttenuation() untuk detail penggunaan.

AudioInteractionGroup

Baca Paralel

Jika AudioEmitter dan AudioListener berbagi grupinteraksi, maka pendengar dapat mendengar emitter.

DistanceAttenuation

BinaryString
Keamanan Roblox
Baca Paralel

Menggambarkan kurva volume-over-distance yang mempengaruhi seberapa keras AudioListener akan mendengar AudioEmitter, berdasarkan jarak di antara mereka.

Properti ini internal dan tidak dapat diakses oleh skrip; itu ada untuk mendukung replikasi. Lihat SetDistanceAttenuation() untuk detail penggunaan.

Metode

GetAngleAttenuation

Mengembalikan sudut pemetauan tabel ke volume. Kunci adalah angka antara 0 dan 180 (termasuk), sementara nilai adalah angka antara 0 dan 1> 11> (termasuk) yang menggambarkan bagaimana volume berkurang tergantung pada arah. Metode ini mengembalikan tabel k


Memberikan nilai

Volume pemetaan tabel, seperti yang dijelaskan di atas.

GetConnectedWires

Instances

Mengembalikan matriks Class.Wire|Wires yang terhubung ke mengepinyang ditentukan. AudioEmitter memiliki satu mengepin"Input".

Parameter

pin: string

Memberikan nilai

Instances

GetDistanceAttenuation

Mengembalikan jarak pemetauhan tabel ke volume. Kunci adalah angka yang lebih besar atau sama dengan 0, sementara nilai adalah angka di antara 0 dan 1 (termasuk) yang menggambarkan cara volume berkurang dari jarak. Metode ini mengembalikan tabel kosong jika kurva pemetauhan default digunakan.


Memberikan nilai

GetInteractingListeners

Instances

Memberikan nilai

Instances

SetAngleAttenuation

void

Tetapkan kurva volume-over-angle yang mempengaruhi seberapa keras sebuah AudioListener akan mendengar AudioEmitter, berdasarkan sudut antara mereka dan LookVector yang terkait dengan 2>Class.Audio2> .

Garis ditunjukkan oleh kunci peta meja untuk nilai volume. Kunci diharapkan menjadi angka unik antara 0 dan 180 (termasuk), sementara nilai diharapkan menjadi angka antara 0 dan 1> 11> (termasuk). Tabel yang berisi hingga 400 pas nilai kunci diduk

Volume dari AudioEmitter dari perspektif Class.AudioListener di sudut AudioListener ditentukan dengan interpolasi secara lini antara tingkat volume unt

Volume ini akan dikalikan dengan volume dari semua kurva penurunan lainnya (termasuk yang ada di penerima AudioListener ) untuk mendapatkan keseruan terakhir.

Jika tabel kosong atau nil, tabel AudioEmitter bertindak sebagai pengganda sudut dengan nilai volume konstan 1.

Parameter

curve: Dictionary

Memberikan nilai

void

SetDistanceAttenuation

void

Tetapkan kurva volume-over-距离 yang mempengaruhi seberapa keras AudioListener akan mendengar AudioEmitter, berdasarkan jarak di antara mereka.

Lembah diwakili oleh kunci jarak tabel untuk nilai volume. Kunci diharapkan menjadi angka yang unik lebih besar dari atau sama dengan 0, sementara nilai diharapkan menjadi angka antara 0 dan 1 (termasuk). Tabel yang mengandung hingga 400 kunci-nilai pasangan diperbolehkan.

Volume dari AudioEmitter dari perspektif seorang Class.Audiolistener di jangkauan AudioListener adalah ditentukan dengan menginterpolasi secara

Volume ini akan dikalikan dengan volume dari semua kurva penurunan lainnya (termasuk yang ada di penerima AudioListener ) untuk mendapatkan keseruan terakhir.

Jika tabel kosong atau nil, AudioEmitter bertindak berdasarkan kurva pengecilan jarak yang ditentukan oleh undang-undang ke-24.

Parameter

curve: Dictionary

Memberikan nilai

void

Contoh Kode

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

Acara