Menu
CoddyTech

Xu xuất hiện lại

Thuộc phần Lập trình game Roblox trong hành trình Lua của Coddy. Bài học 16 trên 25.

Mỗi đồng xu giờ cho 1 điểm, chỉ một lần. Đồng xu thật nên biến mất, rồi xuất hiện lại để có thể thu thập lần nữa.

Transparency = 1 ẩn một phần, nhưng phần đó vẫn kích hoạt Touched. CanTouch = false khiến một phần ngừng kích hoạt Touched cho đến khi được đặt lại thành true.

Để làm phần đó xuất hiện lại, hãy chờ bên trong hàm Touched rồi hoàn tác các thay đổi. task.wait chỉ tạm dừng hàm này, nên các lần chạm khác vẫn tiếp tục xảy ra và bị bỏ qua khi debounce là true:

local used = false
pad.Touched:Connect(function(hit)
	if not used then
		used = true
		pad.Transparency = 0.5
		task.wait(5)
		pad.Transparency = 0
		used = false
	end
end)

Tấm đệm mờ dần trong 5 giây sau khi bị chạm, rồi xuất hiện lại và sẵn sàng hoạt động.

challenge icon

Thử thách

Trung bình

Ẩn đồng xu đã được nhặt, rồi cho nó xuất hiện lại sau 3 giây.

  1. Sau dòng lệnh thêm đồng xu, hãy ẩn nó: coin.Transparency = 1 và coin.CanTouch = false.
  2. Sau đó, chạy task.wait(3) rồi hiện đồng xu lại: Transparency 0, CanTouch true.
  3. Cuối cùng, đặt collected = false để có thể nhặt đồng xu lần nữa.

Nhấn Chơi rồi đi qua một đồng xu: nó biến mất và xuất hiện lại sau 3 giây. Sau đó nhấn Kiểm tra.

Tự làm thử

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
	local collected = false
	coin.Touched:Connect(function(hit)
		local player = Players:GetPlayerFromCharacter(hit.Parent)
		if player and not collected then
			collected = true
			player.leaderstats.Coins.Value += 1
		end
	end)
end

Tất cả bài học trong Lập trình game Roblox

Tự luyện tập: Trình biên dịch Lua online