【6】if/then文によるトラップ

if/then文を使えば、触れたものをすべて破壊するのではなく、プレイヤーのHPを変化させるトラップを作成することができます。RobloxアバターにはHumanoid(ヒューマノイド)と呼ばれるオブジェクトが含まれており、プレイヤーが動き回ったり、プレイヤーのHPを管理したりすることができます。if/then文を使えば、トラップにヒューマノイドのパーツが触れているかを確認することができます。触れていれば、プレイヤーのHPはゼロになります。

パーツとスクリプトを設定する

  1. トラップのpart(パーツ)を追加し、名前を付けます。
  2. トラップのパーツに Script(スクリプト)を追加し、名前を付けます。
  3. スクリプトの親パーツを指定する trap 変数を作成します。

カスタム関数を作成する

トラップのパーツのTouchedイベントに紐づけする関数を作成します。

  1. パラメータを持つ関数を作成します。この例では、onTouch(関数名) および otherPart (パラメータ)という名前を付けます。
  1. 関数の中に、パラメータの親オブジェクトを格納する変数を作成します。
  1. 関数をトラップパーツの Touched と紐づけし、何かが触ったときに実行されるようにします。

Humanoidか確認する

パラメータ otherPart はトラップパーツにタッチするすべてのものを記録します。これは、プレイヤーの場合もBaseplate(ベースプレート)の場合もあります。トラップが Humanoid のみを破壊するようにするため、if/then文を使って otherPart に、Humanoidオブジェクトが含まれるかを確認します。

特定のオブジェクトを探す

関数 FindFirstChildWhichIsA() を使用して特定の種類のオブジェクトを探すことができます。これは、Humanoidタイプのオブジェクトを探すのに便利です。Humanoidが含まれるものを格納するために、変数を使用することができます。

local humanoid = character:FindFirstChildWhichIsA("Humanoid")

ヒューマノイドを探すためif/then文を追加する

if/then文を使用して、先ほど作成した humanoid 変数に何かが格納されているかどうかを調べます。

ヒューマノイドのHPを変化させる

if文が true であれば、Humanoid オブジェクトが格納されていることになりますので、そのオブジェクトのHPを示すプロパティー変数(Health)に0を代入して、プレイヤーのHPを0にします。if文が false であれば、触れたのは Humanoid ではないということになりますので、if文内のコードは実行されません。

  1. thenend の間に「humanoid.Health = 0」と入力します。
  1. ゲームをテストします。

完成したコードの例

-- プレイヤーが触れた場合、体力を0にする
 
-- 変数の設定
local trap = script.Parent
 
-- trapパーツに触れたら呼ばれる関数
local function onTouch(otherPart)
    -- 触れたパーツの親を取得
    local character = otherPart.Parent
 
    -- その親の子供の中にHumanoidタイプのオブジェクトが存在するのかを確認
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
 
    if humanoid then
        -- もし、Humanoidタイプのオブジェクトが見つかったら、体力を0にする
        humanoid.Health = 0
    end
end
 
-- trapパーツにタッチイベントを接続する
trap.Touched:Connect(onTouch)

コードのトラブルシューティング

  • すべての変数が一致していることを確認します。すべてのスペル、大文字・小文字は記載の通りにしてください。
  • end は2つ必要です。ひとつは if/then 文用、もうひとつは関数用です。

コメントを残す コメントをキャンセル

モバイルバージョンを終了