In Introduction to scripting、あなたは経験の中で時間の経過に伴って変化を加える方法を学びました。ユーザーの行動に基づいて変化を加えたい場合はどうですか?このチュートリアルでは、ユーザーがその上を歩くと死亡する致命的な溶岩の床を作成する方法を学びます。
セットアップ
致命的な溶岩を置くための場所が必要です。Introduction to scriptingコースに従った場合、溶岩の床は消失するプラットフォームに覆われた隙間にちょうど適しているでしょう。
Partを挿入し、世界の中で適切な位置に移動させます。名前はLavaFloorにします。
それをリサイズして、囲まれた空間の床を覆うようにします。

MaterialプロパティをNeonに設定し、Colorをオレンジの色合いにすることで、床をより溶岩らしく見せます。


LavaFloorパートにScriptを挿入し、名前をKillに変更します。

デフォルトのコードを削除し、溶岩用の変数を作成します。
local lava = script.Parent
イベントに接続する
ユーザーが溶岩に触れたときに検出するためにイベントを使用します。すべてのパーツには、何かがそれに触れたときに発火するTouchedイベントがあります。このイベントに接続して、発火したときに関数を実行します。
killという新しい関数を宣言します。
陰の点を使用して、溶岩オブジェクトのTouchedイベントにアクセスします: lava.Touched。
Touchedイベントに対してConnect関数を呼び出し、パートが触れられた時に呼び出される関数としてkill()を渡します。
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
kill関数に書かれたコードは、何かが溶岩に触れるたびに実行されます。Connect関数にはコロンが使用されていて、ドットではないことに注意してください - この時点では理由を心配する必要はありませんが、違いを覚えておいてください。
接触しているパートを取得する
ユーザーを殺すためには、そのユーザーに関連付けられたオブジェクトが関数に必要です。パートのTouchedイベントは、触れた「他のパート」を提供できますが、それを関数のパラメーターとしてリクエストする必要があります。
パラメーターは、関数が呼び出されたときに受け取ることを期待するものの定義です。パラメーターは、他の変数と同様に関数内で使用できます。関数が呼び出されるときに、括弧に含めることでパラメーターに情報を渡すことができます。パラメーターは、関数の最初の行の括弧内で定義されます。kill関数のためにotherPartというパラメーターを作成します。
local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)
kill関数が呼び出されると、otherPartパラメーターは溶岩の床に触れたパートを表し、関数内で書かれたコードはそれを使用できるようになります。
キャラクターとヒューマノイド
ユーザーが溶岩に触れると、Robloxはそのユーザーが触れた特定の体の部分を検出できます。例えば、左足や右足などです。このパートはユーザーのCharacterモデルの中にあり、そこにはユーザーのアバターを構成するすべてのオブジェクトが含まれています:
- ユーザーの頭、四肢、胴体などの個々の体の部分。
- ユーザーが着用している衣服やアクセサリー。
- ユーザーに関連する多くのプロパティを含む特別なオブジェクトHumanoid。
- ユーザーの動きを制御するためのHumanoidRootPart。
前述のように、溶岩に触れる体の部分はCharacterモデルの一部なので、otherPart.Parentでそのキャラクターへの参照を取得できます。溶岩の床に触れたパートの親を保存するための変数を作成します。
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)
キャラクターモデルから、ユーザーを殺すためにHumanoidオブジェクトを取得する必要があります。これをFindFirstChild()関数を使って行うことができます―探しているものの名前を渡すだけで、そのオブジェクト内に見つけた最初の一致する子を提供します。partParent変数に対してFindFirstChild()を呼び出し、"Humanoid"を探して、その結果を新しい変数humanoidに保存します。
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)
ヒューマノイドを確認する
if文を使用することで、Humanoidが見つかったかどうかを簡単に確認できます。if文内のコードは、最初の行で定義された条件が真の場合にのみ実行されます。
さまざまな演算子を使用して、将来のコースで遭遇するより複雑な条件を構築できますが、今はhumanoid変数だけをそこに置いておきます。humanoidを条件として持つif文を作成します。
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
end
end
lava.Touched:Connect(kill)
キャラクターの健康を設定する
Humanoidが確認されたので、そのプロパティを変更できます。Healthプロパティを0に設定すると、関連するキャラクターは死亡します。if文の本文で、ヒューマノイドのHealthプロパティを0に設定します。
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)
これで、あなたの溶岩の床は完成です!経験をテストして、致命的な溶岩がユーザーに接触すると成功裏に彼らを殺すことがわかります。溶岩をオビーの追加の挑戦として使用したり、世界の境界として使用してみてください。
最終コード
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)