
関数の練習として、炎をゲーム内のパーツに設定し、ゲームスタート時に炎を破壊し、スパークルに置き換える関数を作成してみましょう。

パーツとスクリプトを設定する
新しいパーツを作成する
- 新しい Part(パーツ)を作成し、名前を変更します。このレッスンでは、FirePart という名前にします。
- FirePartを右クリックし、Insert Object から、Effects(エフェクト)下の Fire(炎)を選択します。
新しいスクリプトを作成する
- Explorer(エクスプローラー)で、FirePart に新しいスクリプトを追加します。
- スクリプトの名前を変更します。このレッスンでは、StopFire という名称にします。
- Hello Worldを削除し、スクリプトの目的を説明するコメントを追加します。
- firePart という名前の新しい変数を作成します。これは、スクリプトの親を示すものとなります。
-- Script removes the fire from firePart
-- Set up variables
local firePart = script.Parent
炎を破壊する
ロブロックスには炎をスパークルに置き換える関数がないので自分で作成します。名前は stopFire() とします。関数の名前は任意ですが、ここでは stopFire() にします。他の名前にする場合は、機能が分かるようなものにしましょう。
新しい関数を作成する
- コメントの下に local function stopFire() と入力します。
- [Enter]を押します。(endはオートコンプリートで現れます)
コードは次のようになっているはずです。
-- Removes the fire from firePart
local firePart = script.Parent
-- Custom function to destroy the fire
local function stopFire()
end
Destroyを使用して炎を停止させる
関数を作成したので、次に stopFire() と end の間に命令文を追加します。Destroy()という既成の関数を使用して、firePart の親である Fire を取り除きます。
- stopFire() と end の間に firePart.Fire:Destroy() と入力します。

- end の下で、stopFire() を呼び出します。

コードをテストします。炎は消えるはずです。実行中にExplorerを確認してみると Fire がなくなっているのが確認できると思います。テストプレイを終了するとまた現れます。

新しいインスタンスを作成する
パーツやスクリプトなど、ゲームに追加されるものはすべてオブジェクトと呼ばれます。特定のタイプのオブジェクトの各コピーはインスタンスと呼ばれます。Fire(炎)はインスタンスの一種です。炎のインスタンスをスパークルに置き換えるには、ParticleEmitter のインスタンスを使用します。これは、スパークル、煙といった特殊効果を作成するのに使用されます。

ParticleEmitterインスタンスを作成する
- firePart.Fire:Destroy() の下に次を入力します。
local spark = Instance.new(“ParticleEmitter”)

- 次の行で下記のように入力し、firePart に ParticleEmitter を追加します。
spark.Parent = firePart

インスタンスを FirePart の親(Parent)にすることで、Fire とまったく同じ位置に配置することができます。
スクリプトをテストする
- ゲームを実行し、炎がParticleEmitterに置き換えられることを確認します!

トラブルシューティングのヒント
・“ParticleEmitter” のスペルが正しいことを確認します。またダブルクォーテーションと( )の間にあることを確認します。
・stopFire() が end の下に入力されていることを確認します。入力されていないと、関数を呼び出したり、命令を実行したりすることができません。
完成したコードの例:
-- Replaces Fire with Sparkles
-- Set up variables
local firePart = script.Parent
-- Create the function
local function stopFire()
-- Destroy the fire instance
firePart.Fire:Destroy()
-- Add a new particle instance to the part
local spark = Instance.new("ParticleEmitter")
spark.Parent = firePart
end
-- Call the function
stopFire()
print関数のトラブルシューティング
様々な場所に print関数を入れることで、エラーが見つけやすくなります。例えば、stopFire() 関数に print関数を入れておけば、コードの他の部分が期待通りに動かなくても、関数が呼び出されているのかを確認することができます。
- 関数の中に print関数を追加して、関数が呼び出されていることを確認します。
local function stopFire()
print("Starting stopFire function")
-- Destroy the fire instance
firePart.Fire:Destroy()
-- Add a new particle instance to the part
local spark = Instance.new("ParticleEmitter")
spark.Parent = firePart
end
stopFire()
[ 【1】関数 ]