AudioEmitter
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
AudioEmitter memancarkan aliran audio ke dunia.Ini menyediakan satu Input pin yang dapat terhubung ke oleh satu atau lebih Wires .Setiap aliran yang terhubung ke AudioEmitter diberikan ke dunia dari posisi orangtua pemancar.Jika orangtua adalah Attachment , Camera , atau PVInstance , posisi dunia orangtua akan digunakan.Jika orangtua bukan salah satu Kelasini, AudioEmitter efektif diam.
AudioEmitters didengar oleh AudioListeners untuk menerapkan spasialisasi 3D.
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
Mewakili bagaimana volume yang dirasakan dari suara yang dipancarkan berubah berdasarkan sudut antara AudioListener dan LookVector yang terkait dengan AudioEmitter.
Kontrol yang AudioListeners mampu mendengar ini AudioEmitter .
Mewakili bagaimana volume yang dirasakan dari suara yang dipancarkan berubah seiring dengan peningkatan jarak antara AudioListener dan AudioEmitter.
Mengontrol seberapa terperinci simulasi audio harus untuk ini AudioEmitter .
Metode
Mendapatkan kurva penurunan sudut yang digunakan oleh AudioEmitter, atau tabel kosong jika menggunakan kurva default.
Kembalikan array dari Wires yang terhubung ke mengepinyang ditentukan.
Mendapatkan kurva penurunan jarak yang digunakan oleh AudioEmitter, atau tabel kosong jika menggunakan kurva default.
Mengatur kurva penurunan sudut yang harus digunakan oleh AudioEmitter , atau menggunakan kurva konstan volume 1 jika tidak ada yang disediakan.
Tetapkan kurva penurunan jarak yang harus digunakan oleh AudioEmitter, atau gunakan kurva rolloff terbalik jika tidak ada yang disediakan.
Acara
Memicu ketika instansi lain terhubung ke atau terputus dari AudioEmitter melalui Wire .
Properti
AngleAttenuation
Mewakili kurva volume-over-angle yang mempengaruhi seberapa keras AudioListener akan mendengar AudioEmitter , berdasarkan sudut di antara mereka dan LookVector yang terkait dengan AudioEmitter .
Properti ini internal dan tidak dapat diakses oleh skrip; ada untuk mendukung replikasi. Lihat SetAngleAttenuation() untuk rincian penggunaan.
AudioInteractionGroup
Jika AudioEmitter dan AudioListener berbagi grupinteraksi, maka pendengar dapat mendengar pemancar.
DistanceAttenuation
Mewakili kurva volume-over-jarak yang mempengaruhi seberapa keras AudioListener akan mendengar AudioEmitter, berdasarkan jarak di antara mereka.
Properti ini internal dan tidak dapat diakses oleh skrip; ada untuk mendukung replikasi. Lihat SetDistanceAttenuation() untuk rincian penggunaan.
SimulationFidelity
Mengontrol seberapa terperinci simulasi audio harus untuk ini AudioEmitter , mirip dengan MeshPart.CollisionFidelity atau MeshPart.RenderFidelity .
AudioEmitters dan AudioListeners yang tidak setuju dengan tingkat rincian yang diperlukan akan menggunakan opsi yang kurang terperinci.
Metode
GetAngleAttenuation
Kembalikan sudut pemetaan tabel ke volume.Kunci adalah angka di antara 0 dan 180 (termasuk), sementara nilai adalah angka di antara 0 dan 1 (termasuk) yang menggambarkan bagaimana volume berkurang tergantung pada arah.Metode ini menghasilkan tabel kosong jika kurva penurunan sudut default digunakan.
Memberikan nilai
Sudut peta tabel ke volume, seperti yang dijelaskan di atas.
GetConnectedWires
Kembalikan array dari Wires yang terhubung ke mengepinyang ditentukan. AudioEmitter memiliki satu mengepin"Input".
Parameter
Memberikan nilai
GetDistanceAttenuation
Kembalikan jarak pemetaan tabel ke volume.Kunci adalah angka lebih besar atau sama dengan 0, sementara nilai adalah angka antara 0 dan 1 (termasuk) yang menggambarkan bagaimana volume menurun dari jarak.Metode ini men返回 kosong meja jika kurva penyusutan jarak default digunakan.
Memberikan nilai
GetInteractingListeners
Memberikan nilai
SetAngleAttenuation
Mengatur kurva volume-over-angle yang mempengaruhi seberapa keras AudioListener akan mendengar AudioEmitter , berdasarkan sudut di antara mereka dan LookVector yang terkait dengan AudioEmitter .
Lengkungan diwakili oleh kunci peta tabel ke nilai volume.Diharapkan kunci menjadi angka unik di antara 0 dan 180 (termasuk), sementara nilai diharapkan menjadi angka di antara 0 dan 1 (termasuk).Tabel yang berisi hingga 400 pasangan kunci-nilai dapat didukung.
Volume dari AudioEmitter dari perspektif sebuah AudioListener pada sudut a ditentukan dengan interpolasi linier di antara tingkat volume untuk titik-titik pada kurva yang nilai sudutnya berada langsung di atas dan di bawah a .Jika tidak ada poin di bawah a atau tidak ada poin di atas a , tingkat volume dari titik lain dipilih.Pada dasarnya, kurva adalah serangkaian titik yang terhubung oleh garis lurus, dan di luar titik akhir kiri dan kanannya, kurva memanjang ke luar pada tingkat volume masing-masing.
Volume ini akan dikalikan dengan volume dari semua kurva penyempurnaan lainnya (termasuk yang di terima AudioListener ) untuk mendapatkan audibilitas akhir.
Jika tabel kosong atau nil , AudioEmitter default menggunakan kurva penurunan sudut dengan nilai konstan volume 1 .
Parameter
Memberikan nilai
SetDistanceAttenuation
Mengatur kurva volume-over- jarak yang mempengaruhi seberapa keras AudioListener akan mendengar AudioEmitter, berdasarkan jarak di antara mereka.
Lengkungan diwakili oleh kunci peta tabel ke jarak volume.Diharapkan kunci adalah angka unik lebih besar dari atau sama dengan 0, sementara nilai diharapkan menjadi angka antara 0 dan 1 (termasuk).Tabel yang berisi hingga 400 pasangan kunci-nilai dapat didukung.
Volume dari AudioEmitter dari perspektif sebuah AudioListener pada jarak d ditentukan dengan interpolasi linier di antara tingkat volume untuk titik-titik pada kurva yang jaraknya langsung di atas dan di bawah d .Jika tidak ada poin di bawah d atau tidak ada poin di atas d , tingkat volume dari titik lain dipilih.Pada dasarnya, kurva adalah serangkaian titik yang terhubung oleh garis lurus, dan di luar titik akhir kiri dan kanannya, kurva memanjang tanpa batas di tingkat volume masing-masing.
Volume ini akan dikalikan dengan volume dari semua kurva penyempurnaan lainnya (termasuk yang di terima AudioListener ) untuk mendapatkan audibilitas akhir.
Jika tabel kosong atau nil , AudioEmitter default menggunakan kurva penurunan jarak yang ditentukan oleh hukum kuadrat terbalik.
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
Acara
WiringChanged
Peristiwa yang menembak setelah Wire terhubung atau terputus, dan bahwa Wire sekarang atau sebelumnya terhubung ke pin di AudioEmitter dan ke beberapa kejadianlain yang dapat ditransmisikan.
Parameter
Apakah instansi terhubung atau terputus.
Pin pada AudioEmitter yang menjadi target Wire .
The Wire antara AudioEmitter dan instansi lainnya.