Pengumpul Koin
Termasuk bagian Scripting Game Roblox dalam perjalanan Lua di Coddy. Pelajaran 15 dari 24.
Pad harta karun itu menetapkan set Coins ke 100. Koin seharusnya add 1, dan hal itu menimbulkan masalah baru.
Touched aktif sekali untuk setiap bagian tubuh yang menyentuhnya, jadi satu langkah ke atas koin dapat mengaktifkannya beberapa kali. Tambahkan 1 poin setiap kali, dan satu koin akan memberikan beberapa poin.
Solusinya adalah debounce: variabel yang mengingat "ini sudah terjadi" dan membuat kode mengabaikan pengulangan:
local used = false
button.Touched:Connect(function(hit)
if not used then
used = true
print("Pressed!")
end
end)not used bernilai true saat used bernilai false, jadi hanya sentuhan pertama yang lolos dari if not used. a and b bernilai true hanya jika keduanya bernilai true: if player and not used then membutuhkan pemain dan koin yang belum digunakan.
Agar hal itu bisa terjadi lagi nanti, tunggu lalu reset: task.wait(3) lalu used = false. Waktu tunggu hanya menjeda fungsi ini, jadi sentuhan lain terus masuk dan diabaikan saat used bernilai true.
value += 1 adalah bentuk singkat dari value = value + 1, dan CanTouch = false membuat sebuah bagian berhenti mengaktifkan Touched sampai nilainya diatur kembali ke true.
Tantangan
Sedangleaderstats dan koneksi Touched sudah siap, tetapi tekan Main dan lewati sebuah koin: Coins bertambah lebih dari 1.
Perbaiki dan selesaikan koinnya:
- Setiap koin memberikan tepat 1 koin setiap kali diambil (debounce untuk setiap koin).
- Koin yang diambil akan tersembunyi:
Transparency1danCanTouchfalse. - Setelah 3 detik, koin muncul kembali (
Transparency0,CanTouchtrue) dan bisa diambil lagi.
Coba sendiri
local Players = game:GetService("Players")
local coins = workspace.Coins
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local coinsValue = Instance.new("IntValue")
coinsValue.Name = "Coins"
coinsValue.Value = 0
coinsValue.Parent = leaderstats
end)
for _, coin in coins:GetChildren() do
coin.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player then
player.leaderstats.Coins.Value += 1
end
end)
end
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Scripting Game Roblox
2Perulangan dan Fungsi
Deretan PilarPembangun TanggaPembangun MenaraPabrik KoinLampu BerkedipJembatan yang Menghilang5Game Pertamamu
Obby Pertamamu3Peristiwa dan Pemain
Alas SentuhLantai LavaLeaderstatsSiapa yang Menyentuhnya?Pengumpul KoinPintu KoinLatihan sendiri: Compiler Lua online