通常、関数は自分の中にコーディングされた情報しか使用できません。しかし、時にはその情報が何であるかを事前に知ることができない場合や、同じ関数を複数の類似情報で再利用したい場合があります。たとえば、最も早くオビーコースをクリアした人の名前を巨大な文字でみんなに表示する関数を使用したい場合、レースが終了するまで未来の勝者の名前はわかりません。
パラメータは、後で関数に渡したい情報のプレースホルダーです。これは、情報を関数に渡すことを可能にする窓のようなものです。
パラメータとイベントを使用してトラップを設定する
このスクリプトは、触れたものをすべて破壊するトラップパーツを作成します。他のパーツも含まれます。設定するにはパラメータを使用する必要があります。トラップが落下して意図せず物を破壊しないように、注意してアンカーを設定してください。
新しいパーツを作成する
触れたものをすべて破壊するパーツを設定する必要があります。
- 何にも触れていない新しいパーツを作成します。何かに触れていると、早すぎて作動する可能性があります。
- エクスプローラーでパーツの名前を: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 文 何かがトラップに触れました を確認します。Output ウィンドウに文字列が表示されない場合は、以下を確認してください。
- 文字列 "何かがトラップに触れました" が local function onTouch() と end の間にあることを確認します。
- Touched が大文字であることを確認します。
関数が正しく設定されたので、パーツに触れたものを破壊するために使用します。関数の中で、文字列の後に objectTouched:Destroy() と入力します。完成したコードは次のようになります。
local trap = script.Parentlocal function onTouch(objectTouched)print("何かがトラップに触れました")-- 触れたオブジェクトを破壊しますobjectTouched:Destroy()endtrap.Touched:Connect(onTouch)再度テストを行い、パーツに触れたときに何が起こるかを確認します。あなたのアバターは足や腕が欠けているはずです。パーツがアバターの頭や首に触れると、完全に破壊されるかもしれません。
まとめ
パラメータは、通常はスコープ外(関数がそれを見えない場所)にある情報を関数に渡すために使用されます。一方、イベントは、ゲーム内で何か重要なことが起こったときに発生する特別な信号です。異なるオブジェクトには異なるイベントがあります。関数はイベントに接続されることで、イベントが発生するたびに呼び出されます。この小さなスクリプトは、トラップの Touched イベントに関数を接続し、トラップに触れているものをパラメータを通じて渡しました。