Menu
CoddyTech

コインの再出現

CoddyのLuaジャーニー「Robloxゲームのスクリプティング」セクションの一部。レッスン 16/25。

各コインはこれで、1回だけ1を与えます。本物のコインは消えてから戻り、もう一度集められるようになります。

Transparency = 1にするとパーツは見えなくなりますが、それでもTouchedイベントは発生します。CanTouch = falseにすると、trueに戻すまでパーツからTouchedイベントが発生しなくなります。

コインを戻すには、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オンラインコンパイラ