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

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

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

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

カスタム関数を作成する

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

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

Humanoidか確認する

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

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

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

  1. 次の文を入力します。
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. ゲームをテストします。

完成したコードの例

-- Checks for player touch. If true, sets health to 0
 
-- Variable setup
local trap = script.Parent
 
-- Checks for Humanoid in otherPart
local function onTouch(otherPart)
    -- Store parent of otherPart
    local character = otherPart.Parent
 
    -- Looks for a humanoid
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
 
    if humanoid then
        -- If part has humanoid, set health to 0
        humanoid.Health = 0
    end
end
 
-- Connect the Touched event to onTouch
trap.Touched:Connect(onTouch)

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

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

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です