3D audio adalah suara arah yang dipancarkan dari lokasi tertentu di ruang 3D, meningkat atau menurun dalam volume tergantung pada jarak dan orientasi antara pemancar audio dan pendengar.Ini berarti bahwa saat pendengar atau pemancar bergerak di sekitar lingkungan, pemain dapat mendengar audio secara dinamis dari berbagai arah dan tingkat volume.
Menggunakan file Rumah Gingerbread - Mulai.rbxl sebagai tempat awal dan Rumah Gingerbread - Lengkapi Audio - Selesai sebagai referensi, tutorial ini menunjukkan cara menambahkan kedua audio loop dan satu tembakan 3D ke pengalaman Anda, termasuk panduan tentang:
- Mengulang suara lingkungan yang diputar segera setelah pemain terhubung ke server.
- Mengaktifkan audio untuk memberi tahu pemain tentang peristiwa situasional penting yang penting untuk gameplaymereka.
- Mengaktifkan audio untuk memberikan umpan balik auditori pemain saat mereka berinteraksi dengan objek 3D.
- Memainkan bit suara karakter yang menarik dan membimbing pemain menuju titik minat dalam lingkungan mereka.
Jika pada titik tertentu Anda terjebak dalam proses, Anda dapat menggunakan Rumah Gingerbread - Audio Lengkap sebagai referensi untuk membandingkan kemajuan Anda.
Objek suara
Untuk membuat audio arah, penting untuk memahami objek audio yang akan Anda kerjakan selama tutorial ini.Ada enam jenis utama objek audio:
- Objek AudioPlayer memuat dan memainkan file audio .
- Objek AudioEmitter adalah pembicara virtual yang memancarkan audio ke lingkungan 3D .
- Objek AudioListener adalah mikrofon virtual yang mengambil audio dari lingkungan 3D.
- Objek AudioDeviceOutput adalah perangkat hardware fisik dalam dunia nyata , seperti speaker atau headphone.
- Objek AudioDeviceInput adalah mikrofon fisik dalam dunia nyata .
- Wires membawa aliran audio dari satu objek ke objek lain.
Semua objek audio ini bekerja sama untuk mengeluarkan suara seperti rekan-rekan dunia nyata mereka.Mari kita lihat bagaimana ini bekerja dalam praktik menggunakan contoh pemain yang memakai headset saat bermain pengalaman dengan laptop mereka:
- The AudioPlayer memuat 1516791621 audio assetID ke dalam pengalaman untuk trek hujan.
- The AudioEmitter memancarkan aliran audio trek hujan ke dalam lingkungan 3D.
- Anak karakter itu AudioListener daftar objek mendengarkan suara itu di dalam lingkungan 3D dan mengirimkannya kembali ke headset mereka.
- Objek AudioDeviceOutput membawa suara dari AudioListener ke speaker fisik pemain, atau dalam kasus ini, headphone mereka.
- Objek AudioDeviceInput menangkap suara dari dunia nyata dan mengembalikannya ke pengalaman untuk panggilan suara.


Bagian berikut menyelam lebih dalam dan merujuk pada objek ini saat Anda belajar cara bermain baik looping dan satu tembakan 3D audio.Saat Anda meninjau objek ini dengan teknik yang akan datang, Anda dapat lebih akurat memprediksi cara menangkap dan memberi makan suara dari pengalaman ke pemain dan sebaliknya.
Mengulangi audio
Mengulangi audio 3D , atau audio arah yang diulang tanpa batas segera setelah pemain terhubung ke server, adalah teknik desain suara umum untuk meningkatkan suasana ruang 3D dengan membuatnya terasa hidup dan dinamis.Selain itu, looping audio 3D mempertahankan sumber suara lingkungan Anda konsisten, seperti statis televisi atau teriakan air terjun; jika suara ini tiba-tiba berhenti, lingkungan akan terasa tidak realistis.
Untuk menunjukkan konsep ini, tinjau bagaimana audio 3D berikut untuk dua cascade besar berhenti segera setelah trek audio yang tidak diputar selesai.Sementara air terdengar pada awalnya membanjiri pemain ke lingkungan luar, perubahan auditori tiba-tiba mengejutkan dan tidak alami bagaimana air terjun berperilaku di dunia nyata.
Demikian pula, sampel menggunakan teknik ini untuk air terjun cokelat mengalir, dan menyesuaikan volume sesuai dengan jarak pemutar dari emitor audio.Ketika pemain berjarak kurang dari 20 stud, emitor memancarkan suara dengan volume penuh.Saat pemain bergerak lebih jauh, audio sloshing berkurang volume setiap 20 stud dari pemancar audio.Ini meniru suara dunia nyata yang berkurang volumenya semakin jauh Anda dari sumber.
Untuk membuat ulang audio 3D looping di sampel Rumah Permen - Audio Lengkap tempat file:
Aktifkan pendengar default yang terpasang pada karakter pemain Anda.
- Di jendela Explorer , pilih SoundService .
- Di jendela Properti , atur Lokasi Pendengar Default menjadi Karakter .Saat Anda menjalankan pengalaman, mesin secara otomatis:
- Membuat AudioListener di bawah setiap karakter pemain Humanoid.RootPart sehingga Anda dapat mendengar pergeseran suara di speaker dunia nyata sesuai dengan posisi dan skala sumber suara dalam pengalaman.
- Membuat AudioDeviceOutput di bawah SoundService .
Di jendela Explorer , navigasikan ke Ruang kerja > Objek Audio Air Terjun , kemudian:
- Sisipkan objek Pemutar Audio untuk membuat sumber audio untuk air terjun.
- Sisipkan objek Pemancar Audio untuk memancarkan aliran posisional dari WaterfallAudioObject .
- Sisipkan objek Kabel untuk membawa aliran dari pemutar audio ke pemancar audio.
Pilih Pemutar Audio , lalu di jendela Properti ,
- Tetapkan AssetID ke rbxassetid://1516791621 untuk memutar trek audio hujan.
- Aktifkan Looping sehingga audio berulang tanpa henti.
Pilih Pemancar Audio , lalu di jendela Properti , atur Peredaman Jarak ke {0: 1}, {20: 0.8}, {40: 0.4}, {80: 0} sehingga suara secara bertahap berkurang volume setiap 20 stud dari pemancar audio.
Pilih Kabel , lalu di jendela Properti ,
- Tetapkan SourceInstance ke AudioPlayer baru Anda untuk menyatakan bahwa Anda ingin kabel membawa audio dari pemainaudio tertentu ini.
- Tetapkan TargetInstance ke AudioEmitter baru Anda untuk menyatakan bahwa Anda ingin kabel membawa audio ke emulator audio khusus ini di dalam air terjun.
Kembali di jendela Explorer , masukkan Skrip ke dalam WaterfallAudioObject , ganti namanya menjadi LoopWaterfallMusic , atur properti RunContext nya menjadi Klien , lalu tempelkan kode berikut ke dalam skrip:
local audioPlayer = script.ParentaudioPlayer:Play()Penjelasan kodeSkrip dimulai dengan menyatakan variabel untuk mewakili orangtua skrip AudioPlayer .Skrip kemudian menetapkan sumber audio untuk diputar dari saat pemain bergabung dengan pengalaman sampai saat mereka keluar dari pengalaman.
Tes ulang pengalaman untuk mendengar suara hujan cokelat loop saat avatar Anda berada di dekat air terjun.Ketika Anda memutar kepala karakter Anda untuk melihat ke arah yang berbeda, suara bergeser secara dinamis di speaker dunia nyata sesuai dengan posisi emitor di ruang 3D.
Satu tembakan audio
Satu tembakan audio 3D , atau audio arah yang diputar sekali pada waktu dan posisi tertentu kecuali pemain mengaktifkannya lagi, memberi konteks pemain tentang tindakan mereka, lingkungan, dan karakter di sekitar mereka.Menggunakan umpan balik auditori jenis ini dalam pengalaman Anda sangat penting karena memungkinkan pemain untuk membuat keputusan strategis seperti menghindari musuh masuk atau mengambil item berguna.
Bagian berikut memberikan rincian implementasi untuk skenario permainan umum di mana pemain membutuhkan umpan balik tepat waktu, arah, termasuk acara permainan situasional, interaksi objek, dan dialog karakter yang tidak dapat dimainkan.
Umpan balik masukan
Sebagai pemain memicu peristiwa situasional kunci di dalam lingkungan mereka, seperti membuka area permainan baru atau meminta tembakan musuh, penting bahwa mereka memahami di mana di ruang 3D mereka perlu mengarahkan fokus dan perhatian mereka.Jika mereka tidak menerima umpan masukanauditori langsung, mereka mungkin melewatkan informasi yang penting untuk gameplaymereka, yang menyebabkan frustrasi karena tidak tahu ke mana harus pergi atau apa yang harus dilakukan selanjutnya.
Untuk menunjukkan mengapa ini penting, mari kita tinjau audio 3D satu tembakan dari template Tag Laser yang diputar dari pemancar setiap pemain:
- Suara pop mendalam dimainkan untuk setiap ledakan yang ditembak pemain dari blaster mereka.
- Suara klik dan robotik beep bermain setiap kali pemain memuat ulang blaster mereka dengan ronde baru.
Kedua suara ini memberikan kesadaran situasional dengan memperingatkan semua pemain terdekat ke arah dari mana ledakan berasal sehingga mereka dapat membuat keputusan terinformasi untuk bergabung dalam kesenangan atau menghindari bahaya potensial.
Sampel menggunakan teknik yang sama ini untuk memberi pemain kesadaran situasi tentang hadiah mereka karena menyelesaikan tujuan utama dalam pengalaman.Setelah mereka mengumpulkan semua tiga gumdrop, pintu ke rumah gingerbread terbuka untuk mengizinkan pemain mengakses hadiah di dalam.
Karena tidak ada perintah khusus yang perlu dikumpulkan pemain untuk mengumpulkan gumdrop, penting agar pemain menyadari pembukaan pintu tidak peduli gumdrop mana yang mereka kumpulkan terakhir.Suara posisional membuat ini mungkin sehingga pemain menyadari kesuksesan mereka dan di mana mereka perlu pergi selanjutnya terlepas dari jarak dan arah relatif mereka dari pintu.
Untuk membuat ulang umpan balas acara tembakan tunggal 3D audio di sampel Rumah Permen - Audio Lengkap tempat file:
Di jendela Explorer , navigasikan ke Ruang kerja > Pintu , kemudian:
- Sisipkan objek Pemutar Audio untuk membuat sumber audio untuk volume.
- Sisipkan objek Pemancar Audio untuk memancarkan aliran posisional dari Pintu .
- Sisipkan objek Kabel untuk membawa aliran dari pemutar audio ke pemancar audio.
Pilih Pemutar Audio , lalu di jendela Properti , atur AssetID ke rbxassetid://5930776613.
Pilih Kabel , lalu di jendela Properti ,
- Tetapkan SourceInstance ke AudioPlayer baru Anda untuk menyatakan bahwa Anda ingin kabel membawa audio dari pemainaudio tertentu ini.
- Tetapkan TargetInstance ke AudioEmitter baru Anda untuk menyatakan bahwa Anda ingin kabel membawa audio ke emulator audio khusus ini dalam volume.
Kembali di jendela Explorer , navigasikan ke ServerScriptService , lalu masukkan Skrip , ganti namanya menjadi GumdropService , atur properti RunContext nya menjadi Server , lalu tempelkan kode berikut ke dalam skrip:
-- Menginisialisasi variabellocal Workspace = game:GetService("Workspace")local Players = game:GetService("Players")local ServerStorage = game:GetService("ServerStorage")local TweenService = game:GetService("TweenService")-- Modullocal Leaderboard = require(ServerStorage.Leaderboard)local PlayerData = require(ServerStorage.PlayerData)-- Variabellocal gumdropsFolder = Workspace.Gumdropslocal gumdrops = gumdropsFolder:GetChildren()local GUMDROP_KEY_NAME = PlayerData.GUMDROP_KEY_NAMElocal GUMDROP_AMOUNT_TO_ADD = 1local function updatePlayerGumdrops(player, updateFunction)-- Perbarui meja gumdroplocal newGumdropAmount = PlayerData.updateValue(player, GUMDROP_KEY_NAME, updateFunction)-- Perbarui papan peringkat gumdropLeaderboard.setStat(player, GUMDROP_KEY_NAME, newGumdropAmount)-- Periksa apakah pemain telah mengumpulkan tiga gumdropsif newGumdropAmount >= 3 then-- Mainkan audio acara pintu saat pemain mengumpulkan tiga gumdroplocal audioPlayer = Workspace.Door.AudioPlayeraudioPlayer:Play()-- Animasi pintu untuk bergerak ke bawahlocal doorPart = Workspace.Doorlocal tweenInfo = TweenInfo.new(2, Enum.EasingStyle.Linear)local tween = TweenService:Create(doorPart, tweenInfo, {Position = doorPart.Position + Vector3.new(0, -15, 0)})tween:Play()endend-- Mendefinisikan penangan acaralocal function onGumdropTouched(otherPart, gumdrop)if gumdrop:GetAttribute("Enabled") thenlocal character = otherPart.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- Pemain menyentuh gumdroplocal audioPlayer = gumdrop.AudioPlayeraudioPlayer:Play()gumdrop.Transparency = 1gumdrop:SetAttribute("Enabled", false)updatePlayerGumdrops(player, function(oldGumdropAmount)oldGumdropAmount = oldGumdropAmount or 0return oldGumdropAmount + GUMDROP_AMOUNT_TO_ADDend)print("Player collected gumdrop")endendend-- Mengatur pendengar acarafor _, gumdrop in gumdrops dogumdrop:SetAttribute("Enabled", true)gumdrop.Touched:Connect(function(otherPart)onGumdropTouched(otherPart, gumdrop)end)endPenjelasan kodeSkrip ini dimulai dengan menginisialisasi Workspace , Players , ServerStorage , dan TweenService layanan sehingga dapat merujuk pada anak-anak dan fungsinya.Kemudian, ia membutuhkan modul Papan Peringkat dan Data Pemain di ; modul ini bertanggung jawab untuk membuat dan memperbarui papan peringkat di sudut kanan atas layar yang melacak jumlah gumballs yang dikumpulkan pemain di lingkungan.
Fungsi skrip updatePlayerGumdrops adalah tempat sebagian besar pekerjaan terjadi untuk menyalakan audio 3D untuk umpan masukanacara, dan membutuhkan dua argumen:
- player - Pemain yang mengumpulkan gumdrop.
- updateFunction - Fungsi panggil balik yang memperbarui jumlah gumdrop yang dikumpulkan pemain.
Ketika pemain bertabrakan dengan gumdrop, skrip:
- Mendapatkan nilai jumlah koleksi gumdrop baru pemain dengan memanggil fungsi PlayerData.updateValue.
- Perbarui papan peringkat dengan jumlah baru ini dengan memanggil fungsi Leaderboard.setStat.
- Memeriksa untuk melihat apakah jumlahnya lebih besar atau sama dengan 3 .
Ketika nilai ini lebih besar atau sama dengan 3 , skrip:
- Memutar trek audio 3D dari pemutar audio ke pemancar audio.
- Pindahkan garis pintu secara linier 15 stud di bawah posisinya saat ini.
Sisa skrip sebagian besar bertanggung jawab untuk mendeteksi apa pun yang bertabrakan dengan gumdrop adalah pemain sehingga dapat memicu suara non-posisional untuk umpan balasan masukan.Untuk informasi lebih lanjut tentang bagian skrip ini, lihat Tambahkan audio 2D - Umpan balas permainan.
Tes ulang pengalaman untuk mendengar suara gerbang slide setelah kamu mengumpulkan semua tiga gumdrop di lingkungan.Ketika Anda memutar kamera, suara bergeser dinamis di speaker dunia nyata sehingga Anda mendengarnya sesuai dengan posisi emitor di ruang 3D.
Interaksi objek
Ketika pemain berinteraksi dengan objek 3D di dalam lingkungan mereka, seperti menyalakan sakelar lampu atau mengambil senjata, penting untuk memberikan umpan balik instan sehingga mereka secara intuitif memahami bagaimana mereka berinteraksi dengan objek.Pasangan antara umpan balas visual dan auditori memperkuat hubungan penyebab dan efek antara tindakan pemain dan respons lingkungan.
Untuk memperluas konsep ini, mari kita tinjau audio 3D satu tembakan berikut dari sampel Tanaman untuk aliran pengguna untuk menanam kubis:
- Suara klik lembut dimainkan saat pemain menanam benih.
- Suara basah seperti tumpahan dimainkan saat pemain menyiram tanaman mereka yang tumbuh.
- Suara klip dimainkan saat pemain mengumpulkan tanaman yang tumbuh penuh.
- Suara thud lembut dimainkan saat pemain menempatkan kubis ke dalam gerobak.
Semua suara ini memperkuat interaksi kunci dekat pemain dengan objek yang berubah bentuk di ruang 3D.Bagi pemain dengan gangguan penglihatan di mana perubahan warna atau animasi lebih sulit untuk didekodekan memiliki, memberikan banyak bentuk umpan balik sensori ini membantu interaksi objek 3D Anda tetap terjangkau dan intuitif bagi sebanyak mungkin pemain.
Untuk memberikan contoh berbeda tentang bagaimana Anda dapat mengkonfigurasi interaksi objek dengan banyak bentuk umpan masukansensori, sampel memberikan umpan balas visual dan auditori setiap kali pemain melangkah di tombol peppermint 3D di dalam rumah gingerbread.Ketika pemain tidak berinteraksi dengan tombol, tampak seperti permen peppermint tipikal, tetapi ketika mereka menginjak tombol, sampel:
- Memutar lagu jingle perayaan.
- Mewarnai sisi tombol dengan warna hijau.
- Pindahkan tombol ke tanah.
Dari sini, Anda dapat menghubungkan interaksi ini ke semua jenis tindakan permainan unik, seperti membuka item atau memicu kemampuan khusus.


Untuk membuat ulang interaksi objek tembakan tunggal 3D audio dalam sampel Rumah Permen - Audio Lengkap tempat file:
Di jendela Explorer , navigasikan ke Ruang kerja > Tombol 3DAudio , kemudian:
- Sisipkan objek Pemutar Audio untuk membuat sumber audio untuk tombol.
- Sisipkan objek Pemancar Audio untuk memancarkan aliran posisional dari 3DAudioButton .
- Sisipkan objek Kabel untuk membawa aliran dari pemutar audio ke pemancar audio.
Pilih Pemutar Audio, lalu di jendela Properti, atur AssetID ke untuk memutar trek audio ceria dan perayaan.
Pilih Kabel , lalu di jendela Properti ,
- Tetapkan SourceInstance ke AudioPlayer baru Anda untuk menyatakan bahwa Anda ingin kabel membawa audio dari pemainaudio tertentu ini.
- Tetapkan TargetInstance ke AudioEmitter baru Anda untuk menyatakan bahwa Anda ingin kabel membawa audio ke pemancar audio khusus ini dalam tombol.
Kembali di jendela Explorer , masukkan Skrip ke 3DAudioButton , ganti namanya PlayAudioWhenPressed , lalu tempelkan kode berikut ke dalam skrip:
local TweenService = game:GetService("TweenService")local buttonModel = script.Parent.Parentlocal buttonPart = buttonModel.ButtonPartlocal buttonPressedAudioPlayer = buttonModel.ButtonPressedAudioPlayerlocal tweenInfo = TweenInfo.new(.2, Enum.EasingStyle.Exponential)local buttonTweenByIsPressed = {-- Ditekan[true] = TweenService:Create(buttonPart, tweenInfo, {Size = buttonPart.Size / Vector3.new(2, 1, 1),Color = Color3.fromRGB(75, 151, 75),}),-- Standar[false] = TweenService:Create(buttonPart, tweenInfo, {Size = buttonPart.Size,Color = Color3.fromRGB(196, 40, 28),}),}local function onIsPlayingChanged()local isPlaying = buttonPressedAudioPlayer.IsPlayinglocal tween = buttonTweenByIsPressed[isPlaying]tween:Play()endonIsPlayingChanged()buttonPressedAudioPlayer:GetPropertyChangedSignal("IsPlaying"):Connect(onIsPlayingChanged)buttonPressedAudioPlayer.Ended:Connect(onIsPlayingChanged)buttonPart.Touched:Connect(function(_hit)buttonPressedAudioPlayer:Play()end)Penjelasan kodeSkrip dimulai dengan mendapatkan:
- The TweenService sehingga dapat menganimasikan bagian tombol yang menonjol dari tanah.
- Model orangtua skrip 3DAudioButton model.
- Bagian tombol yang menonjol dari tanah.
- Pemutar audio yang relevan dengan suara audio perayaan Anda.
Skrip kemudian mendefinisikan:
- Sebuah objek TweenInfo yang menentukan bahwa animasi tombol akan dimainkan dengan gaya animasi eksponensial.
- Dua remaja yang mewakili keadaan tombol ditekan atau tidak ditekan.
- Status yang ditekan true menggerakkan tombol sedikit ke bawah ke tanah dan menyuburkan sisi bagian dengan warna hijau.
- Status tidak ditekan false memindahkan tombol kembali ke posisi aslinya dan menghapus warna sebelumnya.
Sisa dari skrip adalah di mana sebagian besar pekerjaan terjadi untuk umpan masukaninteraksi objek, jadi mari kita tinjau bagaimana fungsi onIsPlayingChanged dan pendengar acara bekerja bersama:
- buttonPart.Touched mendengarkan pemain untuk menyentuh tombol, lalu memanggil fungsi Play() untuk mulai memutar audio yang terkait dari pemutar audio.Proses ini beralih properti AudioPlayer.IsPlaying dari false ke true .
- buttonPressedAudioPlayer:GetPropertyChangedSignal("IsPlaying") mendengarkan properti IsPlaying pemutar audio untuk berubah, lalu memanggil fungsi onIsPlayingChanged.
- Fungsi onIsPlayingChanged menggunakan informasi ini untuk memicu remaja yang mengubah penampilannya di ruang 3D.
- Untuk mencegah pemain secara tidak sengaja memulai ulang audio jika mereka melompat cepat ke tombol dalam serangkaian cepat, buttonPressedAudioPlayer.Ended mendengarkan pemutar audio untuk selesai bermain sebelum memanggil fungsi onIsPlayingChanged lagi.
Penting untuk dicatat bahwa acara onIsPlayingChanged hanya terbakar ketika berubah dari false ke true , artinya tidak terbakar saat berubah dari true ke false .Ini adalah perilaku yang dimaksud karena komplikasi dengan waktu replikasi properti dari server ke klien.Karena ini, acara Ended diberikan dan didengarkan dalam contoh ini untuk menutupi kedua kasus.
Tes ulang pengalaman untuk mendengar suara perayaan saat karakter pemain Anda menyentuh tombol 3D di rumah gingerbread.Ketika Anda berjalan jauh dari tombol, volume suara berkurang.
Dialog karakter
Memberikan audio arah dari karakter non-bermain Anda (NPC) membantu untuk membimbing pemain menuju titik minat di lingkungan mereka, dan menambahkan kedalaman untuk interaksi mereka dengan karakter lain.Bahkan, dalam game yang didorong naratif, banyak desainer game secara strategis menggunakan dialog karakter untuk mengajarkan pemain tentang karakter, sekutu, dan musuh mereka, atau dunia itu sendiri.
Contoh umum dari teknik ini termasuk:
- Gaya dialog untuk mengatur nada gameAnda.
- Banter untuk mengajari pemain tentang hubungan karakter.
- Percakapan musuh untuk mengaku motif atau posisi mereka terhadap pemain.
- Karakter pemain yang berbicara pikiran mereka dengan keras untuk dengan lembut membimbing pemain ke apa yang harus mereka lakukan selanjutnya, seperti menyembuhkan diri sendiri, pindah ke lokasi lain, atau menemukan item.
- Karakter sekutu berbicara dengan karakter pemain untuk mengungkapkan rincian dunia pengalaman seperti sejarah, budaya, dan masalah sosialnya.
Untuk menunjukkan seperti apa ini bisa terlihat dalam praktik, mari kita tinjau audio 3D satu tembakan berikut dari Beyond the Dark pameran yang secara berkala diputar ketika pemain berada di area lobi utama stasiun ruang angkasa.
Menggunakan stasiun ruang angkasa sebagai karakter, klip dialog ini memberikan pemain konteks dan pengetahuan penting tentang pengaturan keseluruhan.Sebagai contoh, dari satu kalimat ini pemain belajar:
- Mereka berada di luar angkasa, khususnya di stasiun luar angkasa bernama Kerr-Newman Deep Space Relay 14.
- Lingkungan mereka masa depan dan menyambut.
- Mereka adalah pengunjung dan kemungkinan akan segera pergi.
Detail ini bersama-sama membanjiri pemain dalam lingkungan mereka, dan menambahkan rasa urgensi untuk misi mereka.Namun, jika pemain tidak tahu apa misi utama mereka, Anda juga dapat menggunakan dialog karakter untuk memberi tahu pemain apa yang ingin Anda lakukan dalam pengalaman Anda.
Untuk mengilustrasikan, sampel menggunakan volume , atau wilayah tak terlihat di dalam ruang 3D, untuk memicu dialog karakter dari boneka salju untuk membimbing pemain untuk mengumpulkan tiga gumdrop untuk membuka pintu beranda.Sebagai salah satu hal pertama yang dilihat pemain saat bergabung dengan pengalaman, pemain lebih mungkin untuk memicu dialog dan tahu apa yang perlu mereka lakukan untuk berhasil.

Untuk membuat ulang dialog karakter tembakan tunggal 3D audio dalam sampel Rumah Gingerbread - Audio Lengkap tempat file:
Di jendela Explorer , navigasikan ke Ruang kerja > Volume dialog , kemudian:
- Sisipkan objek Pemutar Audio untuk membuat sumber audio untuk volume.
- Sisipkan objek Pemancar Audio untuk memancarkan aliran posisional dari DialogueVolume .
- Sisipkan objek Kabel untuk membawa aliran dari pemutar audio ke pemancar audio.
Pilih Pemutar Audio, lalu di jendela Properti, atur AssetID menjadi untuk memutar trek audio instruktif untuk tujuan pengalaman.
Pilih Kabel , lalu di jendela Properti ,
- Tetapkan SourceInstance ke AudioPlayer baru Anda untuk menyatakan bahwa Anda ingin kabel membawa audio dari pemainaudio tertentu ini.
- Tetapkan TargetInstance ke AudioEmitter baru Anda untuk menyatakan bahwa Anda ingin kabel membawa audio ke emulator audio khusus ini dalam volume.
Kembali di jendela Explorer , navigasikan ke StarterPlayer > StarterCharacterScripts , masukkan kode LocalScript , ganti namanya PlayAudioWhenInVolume , dan tempelkan kode berikut ke dalam skrip lokal:
local Workspace = game:GetService("Workspace")local Players = game:GetService("Players")local humanoid = script.Parent:WaitForChild("Humanoid")local volumeDetector = Workspace.DialogueVolumelocal trigger = humanoid:WaitForChild("Animator")local debounce = falselocal localPlayer = Players.LocalPlayervolumeDetector.Touched:Connect(function(hit)if debounce thenreturnendlocal hitCharacter = hit:FindFirstAncestorWhichIsA("Model")local hitPlayer = Players:GetPlayerFromCharacter(hitCharacter)if hitPlayer ~= localPlayer thenreturnenddebounce = truelocal audioPlayer = Workspace.DialogueVolume.AudioPlayeraudioPlayer:Play()audioPlayer.Ended:Wait()debounce = falseend)Penjelasan kodeSkrip ini dimulai dengan mendapatkan layanan Ruang Kerja dan Pemain sehingga dapat merujuk pada anak-anak dan fungsi mereka.Untuk setiap karakter pemain yang dimuat atau dihidupkan kembali ke dalam pengalaman, skrip menunggu:
- Objek volume di ruang kerja bernama DialogueVolume .
Ketika sesuatu bertabrakan dengan volume, fungsi penangani acara Touched mendapatkan nenek moyang pertama yang merupakan Model , yang seharusnya menjadi karakter jika BasePart yang bertabrakan dengan volume adalah turunan model karakter.Jika demikian, fungsi kemudian:
- Mengatur debounce ke true .
- Memainkan dan menunggu audio akhiri.
- Atur debounce kembali ke false .
Mengatur debounce dari false ke true ke false lagi setelah audio selesai diputar adalah pola debounce yang mencegah audio terus diaktifkan sebagai pemain terus bertabrakan dengan volume.Untuk informasi lebih lanjut tentang pola debounce ini, lihat Deteksi kolisi .
Tes ulang pengalaman untuk mendengar dialog karakter instruktif saat karakter pemain menyentuh volume di sekitar boneka salju.