イベントというものを理解しましょう。最初のイベントは「タッチイベント」というもので、プレイヤーがパーツに触れると発生するものです。
登場する英単語
英単語 | 読み方 | |
---|---|---|
Touched | タッチド | 別のパーツに触れたら発生するイベント接続用オブジェクト |
Connect | コネクト | イベントを接続する Touchedの関数 |
Humanoid | ヒューマノイド | オブジェクト |
Health | ヘルス | Humanoidのプロパティ、体力値、これを0にすると絶命 |
RightFoot | ライトフット | 「右足」 Humanoidの1パーツ |
LeftFoot | レフトフット | 「左足」 Humanoidの1パーツ |
LeftLowerLeg | レフトロウレグ | 「左下腿」 Humanoidの1パーツ |
RightLowerLeg | ライトロウレグ | 「右下腿」 Humanoidの1パーツ |
FindFirstChildWhichIsA | ファインド・ファースト・チャイルド・フィッチイズエー | 指定したクラスを子供の中から探す |
チェックポイント
- 「イベント」とは「出来事」のこと
- 「タッチイベント」とは「触れた」という出来事を伝える仕組み
- 「Touched」とはPartに装備されているイベント
- Partオブジェクトには、プロパティ(Properties)、関数(Functions)、イベント(Events)の3つがある
- イベントを実行するには、TouchedのConnect関数を使ってイベント処理を接続する
local function onTouch(hit)
print(hit.Name)
end
script.Parent.Touched:Connect(onTouch)
- タッチイベントのパラメーターには触れたオブジェクトが渡される
- プレイヤーがパーツに触れるというのは、キャラクターの足などのパーツが触ったということ
- 足のパーツの親はキャラクターの「Model」
- プレイヤーモデルの場合、Model内に「Humanoid」オブジェクトがある
- Model内にHumanoidオブジェクトがあるかどうかを探す
- Humanoidが見つかったら、プロパティ「Health」に0を代入するとキャラクターが絶命
local function onTouch(hit)
local character = hit.Parent
local humanoid = character:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
script.Parent.Touched:Connect(onTouch)
- 「FindFirstChild」は子供の中から指定した名前のオブジェクトを見つける関数
- 「FindFirstChildWhichIsA」は子供の中から指定したクラスのオブジェクトを見つける関数
- キャラクターのHumanoidを探す場合は「FindFirstChildWhichIsA」がベスト
local function onTouch(hit)
local character = hit.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
script.Parent.Touched:Connect(onTouch)
- パラメーター内に直接、関数の本体を記述することができる
- 「function( ) ~ end」で記述する
script.Parent.Touched:Connect(function(hit)
local character = hit.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
humanoid.Health = 0
end
end)