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:

  1. Setiap pemain mendapatkan folder leaderstats kecil dengan sebuah nilai bernama Coins, dimulai dari 0. Leaderboard di bagian atas layar akan menampilkannya secara otomatis.
  2. Sebuah koin kuning (sebuah Part kecil) berada di dalam dunia.
  3. Ketika pemain berjalan ke arah koin:
    • Nilai Coins mereka naik sebesar 1.
    • Koin menghilang.

File-file

Dua file script pendek ada di projects/06-touch-coin/:

  • player-setup.lua — diletakkan di dalam sebuah Script di ServerScriptService. Script ini membuat leaderstats dan Coins untuk setiap pemain yang bergabung.
  • coin-touched.lua — diletakkan di dalam sebuah Script di 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

  1. Buka Studio. Gunakan template Baseplate. Sebuah papan abu-abu datar akan muncul.
  2. Sisipkan Coin Part.
    • Di panel Explorer (kanan atas), klik kanan Workspace dan pilih Insert Object -> Part.
    • Ganti nama Part baru menjadi Coin dengan 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, 2
      • BrickColor = Bright yellow
      • Position = kira-kira 0, 5, 0 (atau di tempat yang bisa dijangkau pemain dari titik spawn)
  3. 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.
  4. 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.
  5. 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.lua menggunakan event handler — :Connect pada Touched — persis seperti bab 31. Menemukan Player dari Part yang menyentuh butuh dua baris: sebuah pemanggilan fungsi dan sebuah if.
  • player-setup.lua menggunakan Instance.new (bab 31), pemberian nilai properti (folder.Name = "leaderstats"), dan event PlayerAdded. 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). Gunakan task.wait(5) di dalam touch handler.
  • Target. Ketika pemain mencapai 5 koin, tampilkan pesan chat seperti <name> reached 5 coins! dengan game.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.