コインの再出現
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秒間フェードし、その後元に戻って、再び使えるようになります。
チャレンジ
中級取得したコインを隠し、3秒後に戻します。
- コインを加える行の後で、コインを隠します:
coin.Transparency = 1とcoin.CanTouch = false。 - 次に
task.wait(3)を実行し、再び表示します:Transparencyを0に、CanTouchをtrueにします。 - 最後に、再び取得できるように
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オンラインコンパイラ