Pemutaran audio dilakukan melalui objek Sound yang mengeluarkan audio dalam sebuah pengalaman. Roblox memberikan setiap aset audio ID unik yang dapat Anda tetapkan ke objek Sound untuk memainkan efek suara atau trek musik tertentu. Anda dapat mengatur audio ini untuk dimainkan secara otomatis saat runtime, atau memicunya untuk bermain dari skrip.
Untuk memodifikasi pemutaran beberapa objek Sound, Anda dapat menetapkannya ke grup suara dan mengontrol volume seluruh grup, serta menerapkan efek dinamis.
Buat objek suara
Ada tiga lokasi di mana Anda dapat membuat objek Sound, dan setiap lokasi menentukan bagaimana audio dikeluarkan dan perubahan volume sehubungan dengan posisi pengguna dalam pengalaman.
| Lokasi | Cara audio dikeluarkan | Cara volume berubah |
|---|---|---|
| Anak dari blok, bola, atau silinder BasePart. | Audio dikeluarkan ke luar dari seluruh permukaan bagian tersebut. | Volume berubah tergantung pada jarak antara pendengar suara pengguna dan posisi bagian tersebut, serta ukurannya. |
| Anak dari Attachment, MeshPart, TrussPart, WedgePart, atau CornerWedgePart. | Audio dikeluarkan ke luar dari titik lampiran tunggal atau pusat bagian. | Volume berubah tergantung pada jarak antara pendengar suara pengguna dan posisi lampiran/bagian. |
| Di dalam SoundService atau Workspace. | Audio dikeluarkan ke seluruh pengalaman. | Volume dan posisi pan tetap sama terlepas dari posisi atau rotasi pendengar suara pengguna. |
Audio Posisi
Audio posisi adalah audio yang hanya dapat didengar pengguna dekat posisi tertentu dalam pengalaman. Ada dua jenis audio posisi yang dapat Anda gunakan: volumetrik dan sumber titik.
Volumetrik
Audio volumetrik adalah pilihan audio yang paling realistis, karena secara dinamis berubah tergantung pada posisi pengguna terhadap sumber audio. Misalnya, jika pengguna berada di dalam BasePart dengan objek Sound anak, audio dimainkan di sekeliling pengguna, mirip dengan musik dalam headphone yang diputar dengan volume yang sama di setiap speaker. Ketika pengguna keluar dari bagian tersebut, audio secara bertahap menurun volumenya dan menjadi lebih arah per speaker, bergerak di sekitar kepala pengguna ketika pendengar mereka berputar. Untuk informasi tentang properti yang mengontrol seberapa keras audio Anda di jarak yang berbeda dari bagian tersebut, lihat RollOffMinDistance dan RollOffMaxDistance.
Ukuran BasePart juga mempengaruhi volume audio, karena BaseParts yang lebih besar menghasilkan area yang lebih luas di mana pengguna dapat mendengar audio dan ketika seorang pengguna menjauh dari BasePart yang besar, volume berkurang lebih lambat. Contoh berikut menampilkan BasePart yang sebesar kota dengan objek Sound yang memutar audio lingkungan. Pengguna A dan B mengalami audio dengan cara yang berbeda: pengguna B lebih dekat dengan BasePart yang besar, dan mereka sebagian besar mendengar audio dengan keras yang sama di kedua speaker. Sebaliknya, pengguna A lebih jauh dari kota, jadi audio yang mereka dengar lebih pelan dan lebih arah dibandingkan pengguna B, dengan volume yang berbeda di masing-masing speaker mereka.

Audio volumetrik berguna untuk setiap audio yang perlu mendukung pengguna dan berubah secara dinamis tergantung posisi pengguna, seperti di panggung konser atau zona ambience seperti hujan. Ketika Anda bereksperimen dengan meletakkan objek Sound di BaseParts dengan ukuran dan posisi yang berbeda dari pengguna, Anda dapat mendengar seberapa mendalam audio volumetrik dapat terdengar.
Untuk membuat objek Sound untuk audio volumetrik:
Di jendela Explorer, pilih SoundService.
Di jendela Properties, navigasi ke properti VolumetricAudio, kemudian atur ke Enabled.
Di jendela Explorer, arahkan ke BasePart, lalu klik tombol ⊕. Menu kontekstual ditampilkan.
Dari menu, masukkan Sound.
Di jendela Properties, navigasi ke properti SoundId dan masukkan ID aset audio yang valid.

(Opsional) Jika Anda ingin audio mulai dimainkan saat pengalaman dimulai, aktifkan properti Playing.
Sumber Titik
Berlawanan dengan audio volumetrik, audio sumber titik hanya dikeluarkan dari satu titik sumber. Jenis audio ini berguna untuk ledakan, suara benturan, perangkat elektronik, dan dialog.
Untuk membuat objek Sound untuk audio sumber titik:
- Di jendela Explorer, arahkan ke lampiran, truss, wedge, atau corner wedge, lalu klik tombol ⊕. Menu kontekstual ditampilkan.
- Dari menu, masukkan Sound.
- (Opsional) Jika Anda ingin audio mulai dimainkan saat pengalaman dimulai, aktifkan properti Playing.
Audio Latar Belakang
Audio latar belakang diputar pada volume yang sama tidak peduli ke mana pengguna pergi dalam pengalaman Anda. Jenis audio ini berguna untuk musik yang ingin Anda putar untuk pengguna, terutama ketika Anda ingin membuat soundtrack dari beberapa file audio.
Sangat disarankan untuk menyimpan semua objek Sound untuk audio latar belakang di satu lokasi dalam Workspace untuk tujuan organisasi saat Anda terus menambah dan mengedit audio dalam pengalaman Anda. Contoh berikut menyimpan objek Sound baru di bawah kontainer SoundService, karena layanan ini menentukan bagaimana objek Sound dimainkan dalam pengalaman.
Untuk membuat objek Sound untuk audio latar belakang:
- Di jendela Explorer, arahkan ke SoundService, lalu klik tombol ⊕. Menu kontekstual ditampilkan.
- Dari menu, masukkan Sound.
- (Opsional) Jika Anda ingin audio mulai dimainkan saat pengalaman dimulai, aktifkan properti Playing.
- (Opsional) Jika objek Sound ini adalah satu-satunya trek yang ingin Anda mainkan di tempat tersebut, aktifkan properti Looped-nya.
Kustomisasi objek suara
Properti objek Sound bekerja sama untuk mempengaruhi bagaimana pengguna mengalami audio Anda, seperti:
- Seberapa keras mereka mendengar audio tertentu secara individu dan dalam hubungannya satu sama lain (Volume).
- Bagaimana mereka merasakan volume saat mereka bergerak menjauh dari sumber audio (RollOffMinDistance, RollOffMaxDistance, dan RollOffMode).
- Bagian mana dari audio yang dapat mereka dengarkan (TimePosition).
- Seberapa cepat dan pada nada apa mereka mendengarnya (PlaybackSpeed).
- Jika audio otomatis diputar ulang setelah selesai (Looped).
Volume
Properti Volume memungkinkan Anda untuk mengatur volume audio Anda di mana saja dari 0 (diam) hingga 10 (menggelegar). Jika Anda ingin mengubah volume dari beberapa objek Sound sekaligus, tempatkan mereka di bawah grup suara.
RollOffMinDistance dan RollOffMaxDistance
RollOffMinDistance dan RollOffMaxDistance menentukan rentang bagaimana pengguna merasakan volume dari audio posisi. Untuk audio volumetrik, RollOffMinDistance adalah jarak minimum dalam studs di mana audio mulai menurun volume saat pendengar klien bergerak menjauh dari induk BasePart, dan properti RollOffMaxDistance adalah jarak maksimum dalam studs di mana pendengar klien dapat mendengar audio dari permukaan objek.

Untuk audio sumber titik, RollOffMinDistance dan RollOffMaxDistance bekerja mirip dengan audio volumetrik, tetapi jarak roll off yang dikendalikan oleh properti ini tidak mengelilingi objek, itu hanya mempengaruhi jarak keluar dari titik sumber.

RollOffMode
Properti RollOffMode memungkinkan Anda untuk memutuskan bagaimana audio memudar saat jarak antara pendengar pengguna dan induk objek Sound meningkat. Anda dapat menetapkan properti ini ke salah satu dari empat nilai enum Enum.RollOffMode.

| RollOffMode | Deskripsi |
|---|---|
| Inverse (default) | Volume awalnya memudar secara tiba-tiba dari RollOffMinDistance, tetapi pemudaran volume menjadi lebih gradual semakin dekat pengguna mencapai RollOffMaxDistance. Setelah mereka mencapai RollOffMaxDistance, audio menjadi diam. |
| Linear | Volume memudar secara linear antara RollOffMinDistance dan RollOffMaxDistance. Setelah pengguna mencapai RollOffMaxDistance, audio menjadi diam. |
| InverseTapered | Volume mengikuti model invers ketika dekat dengan RollOffMinDistance dan model kuadrat linear ketika pengguna dekat dengan RollOffMaxDistance. Audio mendekati keheningan di titik jarak maksimum. |
| LinearSquare | Volume memudar antara RollOffMinDistance dan RollOffMaxDistance dengan hubungan kuadrat linear. Audio mendekati keheningan di titik jarak maksimum. |
PlaybackSpeed
Properti PlaybackSpeed memungkinkan Anda menentukan kecepatan pemutaran audio Anda. Misalnya, jika Anda mengatur PlaybackSpeed ke nilai 2, audio Anda diputar dua kali lebih cepat dan satu oktaf lebih tinggi. Demikian pula, jika Anda mengaturnya ke nilai 0.5, audio Anda diputar dua kali lebih lambat dan satu oktaf lebih rendah.
| PlaybackSpeed = 0.5 | PlaybackSpeed = 1.0 | PlaybackSpeed = 2.0 |
TimePosition
Properti TimePosition menampilkan, dalam detik, posisi apa dalam sampel audio yang saat ini didengar pengguna. Properti ini berguna untuk hanya memutar bagian dari sampel audio, atau memicu suatu peristiwa yang terjadi setelah audio mencapai posisi tertentu. Misalnya, cuplikan kode berikut menyebabkan pemancar partikel memancarkan partikel cincin putih di atas bagian dalam rentang waktu terbatas dari trek audio.
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
-- Buat bagian baru
local part = Instance.new("Part")
part.Anchored = true
part.Color = Color3.new(0.75, 0.2, 0.5)
part.Size = Vector3.new(2, 1, 2)
part.Material = Enum.Material.Neon
part.Position = Vector3.new(0, 4, 0)
part.Parent = Workspace
-- Buat lampiran di bagian tersebut
local attachment = Instance.new("Attachment")
attachment.Position = Vector3.new(0, 0.5, 0)
attachment.Parent = part
-- Buat pemancar partikel di lampiran
local emitter = Instance.new("ParticleEmitter")
emitter.Rate = 5
emitter.Lifetime = NumberRange.new(1.5, 1.5)
emitter.Texture = "rbxassetid://1266170131"
emitter.Speed = NumberRange.new(1, 1)
emitter.Size = NumberSequence.new{NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(1, 6)}
emitter.Transparency = NumberSequence.new{NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.25, 0), NumberSequenceKeypoint.new(1, 1)}
emitter.Orientation = Enum.ParticleOrientation.VelocityPerpendicular
emitter.Parent = attachment
-- Buat audio di lampiran
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://1835405646"
sound.Parent = attachment
-- Putar suara
sound:Play()
-- Mulai memeriksa apakah pemancar harus diaktifkan
RunService.Heartbeat:Connect(function()
-- Aktifkan pemancar dalam rentang waktu audio; jika tidak nonaktifkan
emitter.Enabled = sound.TimePosition >= 5 and sound.TimePosition < 20
end)
Looped
Properti Looped memungkinkan Anda untuk mengulang audio setelah selesai diputar. Ketika diatur ke true, audio objek Sound diputar kembali. Ini berguna untuk diterapkan pada audio latar belakang untuk memastikan pengalaman Anda tidak memiliki keheningan yang tiba-tiba.
Objek Suara Skrip
Putar audio secara kontekstual
Selain memutar audio secara otomatis melalui properti Sound objek Playing, Anda dapat memutar audio secara kontekstual dari LocalScript dengan memanggil Play() pada objek Sound yang sesuai. Misalnya:
local Workspace = game:GetService("Workspace")local sound = Instance.new("Sound")sound.SoundId = "rbxassetid://9120386436"sound.Looped = truesound.Parent = Workspacesound:Play()
Atau, jika tempat tersebut akan menampilkan beberapa trek, Anda dapat memutar trek tertentu dari LocalScript:
local SoundService = game:GetService("SoundService")local musicTrack = SoundService:FindFirstChild("LucidDream")if musicTrack and not musicTrack.IsPlaying thenmusicTrack:Play()end
Putar audio antarmuka
Anda dapat memutar audio antarmuka untuk GuiObjects seperti tombol dengan menghubungkan objek Sound ke pendengar peristiwa Activated. Ini memungkinkan Anda memberikan umpan balik auditori kepada pengguna, seperti ketika mereka mengarahkan atau menekannya.
Untuk memutar audio objek Sound ketika pengguna mengaktifkan TextButton atau ImageButton:
- Di jendela Explorer, arahkan ke TextButton atau ImageButton, lalu klik tombol ⊕. Menu kontekstual ditampilkan.
- Dari menu, masukkan baik LocalScript atau Script dengan RunContext diatur ke Enum.RunContext.Client.
- Tempel kode berikut ini ke dalam skrip, kemudian ganti SOUND_NAME dengan nama objek Sound yang terletak di dalam kontainer SoundService.
local SoundService = game:GetService("SoundService")
local button = script.Parent
local sound = SoundService:FindFirstChild("SOUND_NAME")
if not sound.isLoaded then
sound.Loaded:Wait()
end
local function onButtonActivated()
if sound and not sound.IsPlaying then
sound:Play()
end
end
button.Activated:Connect(onButtonActivated)