ダメージ床。床の上を歩くとダメージを受けるようにします。触るとダメージを受けるので、ダメージ壁としても使用できます。
- Workspace に Part を1つ追加します。
- Part に Script を追加します。
床(Part) の上を歩くと、ライフが1ずつ減っていきます。止まった場合はダメージを受けません。
local part = script.Parent
local function onTouch(hit)
local character = hit.Parent
local humanoid = character:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = humanoid.Health - 1 -- 数字を大きくすると沢山ダメージを受けます
end
end
part.Touched:Connect(onTouch) -- Touched イベントの設定
Humanoid の TakeDamage というメソッドを使用することもできます。
if humanoid then
humanoid:TakeDamage(1) -- 数字を大きくすると沢山ダメージを受けます
end
イベントの解除
パーツそのものは消去せず、イベントだけを解除する方法です。
connection = script.Parent.Touched:Connect(function(hit)
local character = hit.Parent
local humanoid = character:FindFirstChild("Humanoid")
if humanoid then
connection:Disconnect() -- イベント解除
humanoid:TakeDamage(50)
end
end)
パーツに乗っている間中ダメージを受ける
プレイヤーがパーツの上に乗るとタッチイベントが発生しますが、微動だにせずにいるとタッチイベントは発生しません。パーツの上に乗っている間ずっとダメージを与えたい場合は次のようにプログラムするのが簡単でしょう。
一度イベントを解除して、再接続することにより再びイベントが発生するようになります。
local part = script.Parent
local function onTouch(hit)
local humanoid = hit.Parent:FindFirstChild(“Humanoid”)
if humanoid then
connect:Disconnect()
humanoid:TakeDamage(5)
wait(1)
connect = part.Touched:Connect(onTouch)
end
end
connect = part.Touched:Connect(onTouch)