通常、関数は自分の中にコーディングされた情報だけを使用できます。しかし、時にはその情報が何であるか事前にわからない場合や、同じ関数を複数の類似した情報で再利用できるようにしたい場合があります。例えば、誰がオビーコースを最も早く完了したかを表示するための関数を使用したい場合、その勝者の名前はレースが終了するまでわかりません。
パラメーターは、後で関数に渡す情報のためのプレースホルダーです。これは、関数に情報を渡すことを可能にする窓のようなものです。
パラメーターとイベントを使用してトラップをセットアップする
このスクリプトは、トラップパーツを作成し、触れたものをすべて破壊します。セットアップするためにはパラメーターを使用する必要があります。トラップが落下して無意識に物を破壊しないように、トラップをアンカーすることに注意してください。
新しいパーツを作成する
触れたものをすべて破壊するパーツを設定する必要があります。
- 何にも触れない新しいパーツを作成します。何かに触れていると早すぎるかもしれません。
- エクスプローラーで、パーツの名前を:TrapPartに変更します。
- パーツをアンカーします。
スクリプトをセットアップする
変数と体験階層について知っていることを使用して、トラップパーツを参照します。
トラップパーツに新しいスクリプトを追加します。スクリプトの名前を TrapScript に変更します。
Hello Worldを削除し、説明的なコメントを追加します。
コメントの下に、スクリプトの親を見つける新しい変数を作成します。
-- 親に触れたものを破壊しますlocal trap = script.Parent
パラメーター付きの関数を作成する
トラップは、触れたものを破壊するために関数を使用します。動作するためには、その関数は何がパーツに触れたのかを知る必要があります。それにはパラメーターを使用する必要があります。パラメーターは関数名の後に続く () の中に記述されます。次のようになります。
local function functionName(parameterName)
end
パラメーターを通して渡される実際の情報は 引数 と呼ばれます。onTouch() という名前の新しい関数を作成し、トラップに触れたものを追跡するための objectTouched というパラメーターを設定します。
ローカル関数を作成します。名前は何でも構いませんが、このレッスンでは onTouch を使用します。
local trap = script.Parentlocal function onTouch()end() の中にパラメーターの名前を記入します。このレッスンでは objectTouched を使用します。
local trap = script.Parentlocal function onTouch(objectTouched)endlocal function onTouch() と end の間に print ステートメントを作成します。これは、次のセクションで何かがパーツに触れているかどうかを確認するために使用します。
local trap = script.Parentlocal function onTouch(objectTouched)print("何かがトラップに触れました")end
イベントを使用して関数を呼び出す
何かがパーツに触れるたびに関数を実行したいと思います。それを実現するために、関数を Touched イベントに接続します。 イベント とは、体験の中で何か重要なことが起こったときに発生する特別な信号です。プレイヤーがパーツに触れる、またはダメージを受けるといったことが含まれます。関数がイベントに接続されていると、そのイベントが発生するたびに関数が実行されます。
Touched イベントは、あるパーツが別のパーツに触れたときに発火し、ボタン、トラップ、プレイヤーが相互作用する他のオブジェクトを作成するために使用できます。
関数の end の下に、 trap.Touched:Connect(onTouch) と入力します。
local trap = script.Parentlocal function onTouch(objectTouched)print("何かがトラップに触れました")end-- 関数を Touched イベントに接続しますtrap.Touched:Connect(onTouch)テストをクリックし、パーツに触れてみてください。テストの print ステートメント 何かがトラップに触れました が表示されるか確認します。出力ウィンドウに文字列が表示されない場合は、以下を確認してください。
- 文字列 "何かがトラップに触れました" が local function onTouch() と end の間にあることを確認します。
- Touched の大文字を確認します。
関数が正しくセットアップされたので、パーツに触れたものを破壊するためにそれを使用します。関数の中で、文字列の後に objectTouched:Destroy() と入力します。完成したコードは次のようになります。
local trap = script.Parentlocal function onTouch(objectTouched)print("何かがトラップに触れました")-- 触れたオブジェクトを破壊しますobjectTouched:Destroy()endtrap.Touched:Connect(onTouch)再度テストを実行し、パーツに触れたときに何が起こるか確認します。アバターは足または腕が欠けるはずです。パーツがアバターの頭や首に触れた場合、完全に破壊されるかもしれません。
まとめ
パラメーターは、通常はスコープ外の情報(関数がそれを見ることができない場所)を関数に渡すために使用されます。一方、イベントは何か重要なことが起こるときに体験の内部で発生する特別な信号です。異なるオブジェクトには異なるイベントがあります。関数は、イベントが発火するたびに呼び出されるようにイベントに接続できます。この小さなスクリプトは、トラップの Touched イベントに関数を接続し、トラップに触れたものをパラメーターを通じて渡しました。