Menu
CoddyTech

Pengumpul Koin

Termasuk bagian Scripting Game Roblox dalam perjalanan Lua di Coddy. Pelajaran 15 dari 25.

Pad harta karun mengatur set Coins ke 100. Koin seharusnya add 1, dan itu menimbulkan masalah baru.

Touched terpicu sekali untuk setiap bagian tubuh yang menyentuhnya, jadi satu langkah ke atas koin bisa memicunya beberapa kali. Tambahkan 1 poin setiap kali, dan satu koin akan memberi beberapa poin.

Solusinya adalah debounce: variabel yang mengingat "ini sudah terjadi" dan membuat kodemu mengabaikan pemicuan berulang:

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 saat keduanya true: if player and not used then membutuhkan pemain dan tombol yang belum digunakan.

Saat perulangan menghubungkan banyak bagian, buat variabel di dalam perulangan agar setiap bagian memiliki variabelnya sendiri. value += 1 adalah bentuk singkat dari value = value + 1.

challenge icon

Tantangan

Sedang

Buat setiap koin memberikan tepat 1 Coin: berjalan melewati satu koin sekarang memberikan beberapa Coin.

  1. Di dalam for loop, sebelum Connect, tambahkan local collected = false.
  2. Ubah pemeriksaannya menjadi if player and not collected then.
  3. Jadikan collected = true baris pertama di dalamnya.

Tekan tombol “Main” dan berjalanlah melewati koin: Coins bertambah tepat 1. Lalu tekan tombol “Periksa”.

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

Semua pelajaran di Scripting Game Roblox

Latihan sendiri: Compiler Lua online