Menu
CoddyTech

硬币重生

本课属于 Coddy Lua 学习旅程的“Roblox 游戏脚本编写”单元。第 16 课,共 25 课。

现在每枚硬币只会给你 1 次奖励。真正的硬币应该消失,然后再出现,这样你就能再次收集它。

Transparency = 1 会隐藏一个部件,但它仍会触发 Touched。CanTouch = false 会让部件停止触发 Touched,直到将它重新设为 true。

要让它重新出现,请在 Touched 函数中等待,然后撤销这些更改。task.wait 只会暂停这个函数,所以其他触碰仍会到来,并在防抖变量为 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)

触碰后,这个垫子会淡出 5 秒,然后重新出现并再次准备就绪。

challenge icon

挑战

中等

让收集到的硬币隐藏,然后在 3 秒后重新出现。

  1. 在添加硬币的语句后面,将它隐藏:coin.Transparency = 1 和 coin.CanTouch = false。
  2. 然后运行 task.wait(3),再让它重新出现:将 Transparency 设为 0,将 CanTouch 设为 true。
  3. 最后,设置 collected = false,这样就可以再次收集它。

按“开始”,然后走过一枚硬币:它会消失,并在 3 秒后重新出现。然后点击“检查”。

亲手试试

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

Roblox 游戏脚本编写中的所有课

自己练习: Lua 在线编译器