溶岩エリア
前回、特定のパーツに繰り返しの変化を加えたけど、今回はプレイヤーの行動をきっかけにプレイヤー自身の状態に変化を加える方法を見ていこう。
プレイヤーがふんだら死んでしまう(プレイヤーの状態が変化する)溶岩の床を作っていくよ。
- 2つのパーツの間に「LavaFloor」という名前で新しいパーツを追加。
- すき間をうめるようにサイズ調整。
- 溶岩に見えるように素材をネオン、色をオレンジに設定。
- LavaFloorパーツに「KillPlayer」という名前でスクリプトを追加。
- デフォルトの(はじめからある)コードを削除して、溶岩の変数を作成。
local lava = script.Parent
イベントへの接続
プログラムでプレイヤーが溶岩に触れたことを知るには、イベントっていう仕組みを使うよ。
すべてのパーツには、何かが触れるとTouchedイベントが発生するようになってるんだ。だから溶岩のパーツに何かが触れたら、特定の関数が実行されるようにあらかじめ設定しておくよ。
- killPlayerという名前の関数を宣言。(中身はのちほど)
- 溶岩の床のTouchedイベントが発生したらkillPlayer関数が呼ばれるように接続。
local lava = script.Parent
local function killPlayer()
end
lava.Touched:Connect(killPlayer)
イベント接続の書き方はルールだから悩まなくていいよ。イベントが発生したときに指定の関数を実行できるってことだけ覚えよう。イベントの種類は出てきたら調べるしかないけどね。
プレイヤーを殺すコード
プレイヤーを殺すためには、Humanoidオブジェクトが必要なんだ。
Humanoidオブジェクトは、キャラクターモデルから探せるんだけど、キャラクターモデルは溶岩の床のTouchedイベントから探せるんだ。考えてわかるものじゃないから、出てきたら1つずつ書き方を覚えていけばいいよ。無理に覚えようとしなくても、使いたいときに少し調べながら書ければいいよ。
local lava = script.Parent
local function killPlayer(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(killPlayer)
溶岩に触れたプレイヤーのキャラクターパーツの情報が溶岩の床のTouchedイベントから「otherPart」という変数でkillPlayer関数に渡されてくるよ。渡されてくる情報をパラメータ(引数)って言うんだ。
パラメータで渡されてきた情報はその関数の中で使えるよ。今回渡されてきた情報は溶岩の床に触れたプレイヤーキャラクターのパーツ情報なので、その情報からHumanoidオブジェクトを探して「humanoid」という変数に保存しているんだ。
if文
if文を使えば、変数の値によって実行するコードを変えることができるよ。
ifの後ろの条件がtrueのとき、thenとendで囲まれたコードを実行するんだ。
if文の条件が変数だけのときは、変数に値が保存されていればtrueになるよ。
local lava = script.Parent
local function killPlayer(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(killPlayer)
Touchedイベントから渡されたパラメータからHumanoidオブジェクトが見つかれば、変数[humanoid」に値が保存されているはずだよ。
だから溶岩の床に触ったパーツからHumanoidオブジェクトが見つかれば(プレイヤーのパーツだったら)条件はtrueになって、humanoidのHealthプロパティが0に設定されるよ。
Healthプロパティを0に設定されたプレイヤーは死んでしまうんだ。
プレイテスト
溶岩の床が完成したのでテストしてみよう。
プレイヤーがバラバラに壊れてかわいそうだけど成功です。お疲れさまでした~。
以上の手順は↓の英語サイトを日本の小中学生でもわかるように、できるだけやさしく解説してみました。
次はプレイヤーがふんだら消えていく床をやっていくよ。
コメント