ループの練習のために、ランプを作成します。ランプは、まず明るくなり、その後時間が経過するにつれて褪色になります。このスクリプトは、街灯や輝くクリスタルなどの他のライトに適用できます。
パートとスクリプトの設定
ランプは、付属のライトとスクリプトを持つパーツになります。
ライトを簡単に見るために、ゲームワールドを 夜 に変更します。Explorer > Lighting > ClockTime を 0 に変更する。
Lamp という名前の新しいパーツまたはモデルを作成します。
ランプを選択し、 ライト 、例えばポイントライトまたはスポットライトを追加します。ライトの明るさプロパティを使用して、輝くランプを作成します。
ランプに、新しいスクリプトを追加します。そのスクリプトの名前は GlowScript です。そのスクリプトで、ランプのパーツとポイントライトを保存する変数を作成します。
local lightPart = script.Parentlocal light = lightPart.SpotLight次に、ループが実行されるたびに光の明るさがどれくらい変更されるかを保持する変数を作成します。次に、ループが実行される前に何秒間ループが再び実行されるかを追跡する別の変数を追加します。
-- どれくらい明るくなるかlocal brightnessChange = 1-- 秒でライトの明るさがどれくらい変わるlocal timeChange = 1
ランプの輝きを作成する
ランプは、 ループ のための 2つの を使用します、1つはランプを明るくするためにカウントし、1つは暗くするためにカウントします。各 ループ には、コントロール変数として名前の明るさを持つことができます。そのように、ランプのコントロール変数が上下すると、ランプの明るさが上昇します
最初のループ (ライト増加)
忘れないでください、for ループは、 Control Variable の後に続くキーワード for で始まります。このスクリプトは、コントロール変数に照明の明るさ値を設定します。
次の値を使用してループを作成します。コントロール変数と終了値をコマで区分してください。
- コントロール変数 : currentBrightness
- 開始値 : 0
- 終値値 : 5
- インクリメント値 : brightnessChange
local timeChange = 1for currentBrightness = 0, 5, brightnessChange doendループの範囲内で、ライトの明るさプロパティをコントロール変数の値に設定するには、light.Brightness = currentBrightness を入力します。ループが実行されると、ライトがより明るくなります。
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnessend変更は一度に発生しないので、timeChange の値を使用して待機機能を追加します。
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endゲームを実行して、光が毎秒どれくらい明るくなったかを見ます。
最初のループで明るさの変化を時間ごとに見ることができない場合:
- ループの開始と終了の間に light.Brightness = currentBrightness があることを確認してください。
- Check that timeChange は、少なくとも 1 以上です。小さい数字は、明るさの変更をより速くすることができますが、長時間では見えにくくなります。
- ループの最初の行には、コントロール変数、終了値、インクリメント値を両方とも区切る 2つのコマがあることを確認してください。
第 2 ループ (ライト減少)
ライトを暗くするには、ループのために 2 秒を使用します。このループの値は、ライトが明るくなり、そして 2 秒ごとに、暗くなります。
時間の経過とともに明るさを減少させるループのコードを 2 つ作成します。ソリューションはコードボックスに記載されています。次の値を使用してください:
- コントロール変数 - currentBrightness は、最後のループの終わりに 5 に設定されます。
- 終了する - 0、ライトを消しています。
- インクリメント - サブトラクト brightnessChange 。
-- 第 2 ループのディムスランプfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endゲームを実行して、ライトが明るくなった後、暗くなるのを見る必要があります。
ライトを繰り返す
現在、ライトは 1回だけオン/オフを切り替えます。ランプを連続してグロー/オフにするには、ループを繰り返し配置する必要があります。
ループの下で、新しいループを作成します。
while true doendループ内のループを作成し、ループ内のループを置きます。ループ内のループをインデントして、ループ内のループを簡単に区別できます。
while true dofor currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endendゲームを実行して、ライトが明るくなり、暗くなるのを繰り返し見る。
完了したライトスクリプト
スクリプトの完成したバージョンは、以下に参照できます。
-- このランプに取り付けられたライトを保存しますlightPart = script.Parentlight = lightPart.SpotLight-- どれくらい明るくなるかlocal brightnessChange = 1-- 秒でライトの明るさがどれくらい変わるlocal timeChange = 0.2while true dofor count = 0, 5, brightnessChange dolight.Brightness = counttask.wait(timeChange)end-- 2つ目のループでライトをオフにするfor count = 5, 0, -brightnessChange dolight.Brightness = counttask.wait(timeChange)endend
概要
プロジェクトで複雑なエフェクトを作成するには、スクリプトは複数のループを使用し、異なる種類のループの組み合わせを含むことができます。グリッチライトをコードするには、2つのループが while ループの中にネストされています。コーダーがもっとループを追加するにつれて、既読みやすいコードを作成できるようになるためにインデントを確認してください。