AudioEmitter
*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
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
Menggambarkan bagaimana volume yang diperkirakan dari suara yang dipancarkan berubah berdasarkan sudut antara AudioListener dan LookVector yang terkait dengan AudioEmitter .
Kontrol yang dapat mendengar AudioListeners ini.
Menyajikan bagaimana volume yang diperkirakan dari suara yang dipancarkan berubah saat jarak antara AudioListener dan AudioEmitter meningkat.
Metode
Mendapatkan kurva penyempurnaan sudut yang digunakan oleh AudioEmitter , atau tabel kosong jika menggunakan kurva default.
Mengembalikan Wires yang terhubung ke mengepinyang ditentukan.
Mendapatkan kurva attenuasi jarak yang digunakan oleh AudioEmitter , atau tabel kosong jika menggunakan kurva default.
Tetapkan kurva penyempurnaan sudut yang harus digunakan oleh AudioEmitter, atau menggunakan kurva volume konstan 1 jika tidak ada yang diberikan.
Tetapkan kurva attenuasi jarak yang harus digunakan oleh AudioEmitter, atau menggunakan kurva rolloff terbalik jika tidak ada yang diberikan.
Properti
AngleAttenuation
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
Jika AudioEmitter dan AudioListener berbagi grupinteraksi, maka pendengar dapat mendengar emitter.
DistanceAttenuation
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
Mengembalikan matriks Class.Wire|Wires yang terhubung ke mengepinyang ditentukan. AudioEmitter memiliki satu mengepin"Input".
Parameter
Memberikan nilai
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
Memberikan nilai
SetAngleAttenuation
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
Memberikan nilai
SetDistanceAttenuation
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
Memberikan nilai
Contoh Kode
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