Mini-proyek Bagian 7: Koin Sentuh untuk Dikumpulkan
Proyek terakhir dalam buku ini adalah sebuah scene Roblox Studio yang nyata: sebuah koin yang memberi poin kepada pemain saat disentuh, lalu menghilang. Proyek ini menggunakan tabel, method, event, dan salah satu global khusus Roblox dari bab 31.
Ini adalah hal pertama dalam buku yang berjalan di dalam Roblox Studio, bukan di terminal. Kalau kamu belum memasang Studio, kembali ke akhir bab 31 dan lakukan itu dulu.
Yang harus dibuat
Ketika experience dimulai:
- Setiap pemain mendapatkan folder leaderstats kecil
dengan sebuah nilai bernama Coins, dimulai dari
0. Leaderboard di bagian atas layar akan menampilkannya secara otomatis. - Sebuah koin kuning (sebuah Part kecil) berada di dalam dunia.
- Ketika pemain berjalan ke arah koin:
- Nilai
Coinsmereka naik sebesar1. - Koin menghilang.
- Nilai
File-file
Dua file script pendek ada di
projects/06-touch-coin/:
player-setup.lua— diletakkan di dalam sebuahScriptdi ServerScriptService. Script ini membuatleaderstatsdanCoinsuntuk setiap pemain yang bergabung.coin-touched.lua— diletakkan di dalam sebuahScriptdi bawah Coin Part. Script ini menangani sentuhan.
Folder tersebut juga memiliki README.md yang
mengingatkanmu tentang langkah-langkah Studio di bawah ini.
Pengaturan Studio, langkah demi langkah
- Buka Studio. Gunakan template Baseplate. Sebuah papan abu-abu datar akan muncul.
- Sisipkan Coin Part.
- Di panel Explorer (kanan atas), klik kanan Workspace dan pilih Insert Object -> Part.
- Ganti nama Part baru menjadi
Coindengan memilihnya lalu menekan F2, atau dengan mengklik dua kali namanya di Explorer. - Di panel Properties, atur:
Anchored=true(agar tidak jatuh)Shape=Cylinder(opsional; membuat tampilannya seperti koin)Size=2, 0.4, 2BrickColor=Bright yellowPosition= kira-kira0, 5, 0(atau di tempat yang bisa dijangkau pemain dari titik spawn)
- Tambahkan Script ke Coin.
- Klik kanan Coin di Explorer -> Insert Object -> Script.
- Script terbuka di editor. Hapus kode contoh dan tempelkan isi dari
projects/06-touch-coin/coin-touched.lua.
- Tambahkan Script player-setup.
- Di Explorer, temukan ServerScriptService. Klik kanan -> Insert Object -> Script.
- Ganti namanya menjadi
PlayerSetup. - Tempelkan isi dari
projects/06-touch-coin/player-setup.lua.
- Coba jalankan.
- Klik tombol Play di bagian atas.
- Karakter uji muncul. Jalan ke arah koin.
- Leaderboard di kanan atas seharusnya menampilkan Coins: 1.
- Koin menghilang.
- Hentikan dengan tombol Stop (atau tutup jendela tes).
Hubungan kode dengan bab-bab
coin-touched.luamenggunakan event handler —:ConnectpadaTouched— persis seperti bab 31. Menemukan Player dari Part yang menyentuh butuh dua baris: sebuah pemanggilan fungsi dan sebuahif.player-setup.luamenggunakanInstance.new(bab 31), pemberian nilai properti (folder.Name = "leaderstats"), dan eventPlayerAdded. Script ini membangun pohon objek kecil di dalam setiap pemain.
Di baliknya semuanya adalah Lua standar: if, pemanggilan
fungsi, pencarian dengan titik, method dengan sintaks titik dua. Bagian
yang khusus Roblox hanyalah nama-namanya (game,
Players, Instance) dan pengkabelannya (event).
Sisanya sama seperti bagian lain dalam buku ini.
Tantangan lebih besar (opsional)
Jika versi dasarnya sudah berhasil, coba salah satu dari ini:
- Banyak koin. Klik kanan Coin di Explorer, pilih Duplicate, dan pindahkan salinannya ke tempat lain. Setiap Coin memiliki Script-nya sendiri, jadi langsung berfungsi saja.
- Respawn. Daripada menghancurkan Coin, sembunyikan
dulu (
coin.Transparency = 1,coin.CanTouch = false) selama lima detik, lalu tampilkan kembali (coin.Transparency = 0,coin.CanTouch = true). Gunakantask.wait(5)di dalam touch handler. - Target. Ketika pemain mencapai 5 koin, tampilkan
pesan chat seperti
<name> reached 5 coins!dengangame.StarterGui:SetCore("ChatMakeSystemMessage", { Text = ... }).
Tidak satu pun dari ini wajib untuk menyelesaikan proyek.
Sudah selesai?
Ketika tes Play menunjukkan koin menghilang dan leaderboard naik sebesar 1, proyek sudah selesai. Proyek terakhir — Collect-All-Coins — mengembangkan ini menjadi game kecil dengan beberapa koin dan kondisi menang.