Menu
CoddyTech

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.

challenge icon

Tantangan

Sedang

leaderstats dan koneksi Touched sudah siap, tetapi tekan Main dan lewati sebuah koin: Coins bertambah lebih dari 1.

Perbaiki dan selesaikan koinnya:

  1. Setiap koin memberikan tepat 1 koin setiap kali diambil (debounce untuk setiap koin).
  2. Koin yang diambil akan tersembunyi: Transparency 1 dan CanTouch false.
  3. Setelah 3 detik, koin muncul kembali (Transparency 0, CanTouch true) 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
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Scripting Game Roblox

Latihan sendiri: Compiler Lua online