プレイヤーの健康を減少させるトラップは、条件文を使用してコーディングできる楽しいゲームプレイ要素です。触れたときにプレイヤーの健康をゼロに設定するパートを作成することで条件文を練習しましょう。
トラップのセットアップ
トラップは、オビーのような動きに基づくチャレンジのある体験で特に効果的です。これから必要な変数と関数をセットアップしていきます。まずはコードボックスを見ずにできるところまで進めましょう。
トラップパートを作成し、名前を付けます。そのパートにスクリプトを挿入します。
スクリプト内に説明的なコメントを追加し、その後で変数を使ってスクリプトの親を参照します。
-- プレイヤーがこの部分に触れた場合、彼らの健康を0に設定local trapPart = script.ParentonTouch()という名前の関数を作成し、otherPartというパラメータを設定します。
-- プレイヤーがこの部分に触れた場合、彼らの健康を0に設定local trapPart = script.Parentlocal function onTouch(otherPart)end関数をトラップパートのTouchedイベントに接続し、何かがそのパートに触れるたびに実行されるようにします。
local trapPart = script.Parentlocal function onTouch(otherPart)endtrapPart.Touched:Connect(onTouch)
プレイヤーの接触を確認
otherPartというパラメータは、トラップパートに何かが触れたことを記録します。それはプレイヤーの一部か、単にベースプレートである可能性があります。
トラップがプレイヤーのみを破壊し、ランダムな装飾アイテムを破壊しないように、if/then文を使用してotherPart にヒューマノイドオブジェクトが含まれているかを確認します。
特定のオブジェクトを探す
FindFirstChildWhichIsA()関数を使用して特定のオブジェクトタイプを探すことができます。これは、ヒューマノイドタイプのオブジェクトを探しているので便利です。プレイヤーはおそらくアバターの一部だけでトラップに触れるので、接触したパートの親を見つけ、ヒューマノイドを探すための変数を設定する必要があります。
onTouch()内で、local character = otherPart.Parentを入力します。
local trapPart = script.Parentlocal function onTouch(otherPart)-- otherPartの親オブジェクトを探しますlocal character = otherPart.ParentendtrapPart.Touched:Connect(onTouch)characterにHumanoidがあるかどうかを確認します。また、以下のように入力します。
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")endtrapPart.Touched:Connect(onTouch)
if文で確認
ヒューマノイドが見つかった場合、ヒューマノイドの健康をゼロに設定します。
if文を使用して、ヒューマノイドがlocal humanoidに正常に割り当てられたかを確認します。
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- ヒューマノイドが見つかったかどうかを評価しますif humanoid thenendendtrapPart.Touched:Connect(onTouch)print文を追加し、ここまでのコードを確認します。
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- ヒューマノイドが見つかったかどうかを評価しますif humanoid thenprint("ヒューマノイドを見つけました")endendtrapPart.Touched:Connect(onTouch)実行ボタンを押し、プレイヤーがそのパートに触れるたびに出力が見えることを確認します。
プレイヤーの健康を変更
もし条件が真であれば、同じヒューマノイド変数を使ってプレイヤーの健康を0に設定できます。
thenとendの間にhumanoid.Health = 0と入力します。
完成したスクリプトlocal trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- ヒューマノイドが見つかったかどうかを評価しますif humanoid thenprint("ヒューマノイドを見つけました")humanoid.Health = 0endendtrapPart.Touched:Connect(onTouch)トラップをテストします。
まとめ
このトラップパートは、条件文を使用してヒューマノイドのパーツを検出し、ヒューマノイドの健康をゼロに設定しました。このスクリプトは、触れたオブジェクトにかかわらずすべてを破壊してしまう前のトラップスクリプトの改善版です。
しかし、いくつかの欠点も残っています。ヒューマノイドはプレイヤーのみに存在するわけではありません。ヒューマノイドはNPCにも存在します。このスクリプトは、プレイヤーの健康をゼロに設定するのにのみ有効です。少しずつ健康を減らす実験を行うこともできますが、望ましいよりも早く健康を減らしてしまう可能性があります。後のレッスンでは、プレイヤーからどれくらいの健康を減らすかをより細かく制御するためのさらなる改善が提供されます。