繰り返し文を練習するために、徐々に明るくなり、その後徐々に暗くなるランプを作成します。このスクリプトは、ストリートライトや光るクリスタルなど、プロジェクト内の他のライトにも適用できます。
部品とスクリプトの設定
ランプは、光とスクリプトが付属した部品になります。
光を見やすくするために、3Dワールドを夜間に変更します。Explorer ⟩ Lightingで、ClockTimeを0に変更します。

新しい部品またはモデルを作成し、それに「Lamp」という名前を付けます。

Lampを選択し、PointLightやSpotLightなどの光を追加します。光の明るさのプロパティを操作して、光るランプを作成します。

Lampに「GlowScript」という名前の新しいスクリプトを追加します。そのスクリプト内で、ランプの部品とスポットライトを保存するための変数を作成します。
local lightPart = script.Parentlocal light = lightPart.SpotLight次に、ループが実行される度に、光の明るさがどれだけ変わるかを保持するための変数を作成します。さらに、ループが再度実行される前に待つ秒数用の別の変数を追加します。
-- 光の明るさが毎回どれだけ変わるかlocal brightnessChange = 1-- 光が明るさを変える秒数local timeChange = 1
ランプを光らせる
ランプは、明るくなるための1つのforループと、暗くなるためのもう1つのforループを使用します。各forループには、制御変数であるcurrentBrightnessがあります。これにより、forループの制御変数が上下すると、ライトの明るさも上下します。
最初のループ(光の増加)
forループは、キーワードforと制御変数で始まります。このスクリプトは、光の明るさの値を制御変数の値に設定します。
次の値を使ってforループをコーディングします。制御変数と終了値をカンマで区切ることを忘れないでください。
- 制御変数: currentBrightness
- 開始値: 0
- 終了値: 5
- 増分値: brightnessChange
local timeChange = 1for currentBrightness = 0, 5, brightnessChange doendforループのスコープ内で、光の明るさのプロパティを制御変数の値に設定します。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がforループのdoとendの間にあることを確認してください。
- timeChangeが少なくとも1以上であることを確認してください。数値が小さいと、明るさの変化が速くなりますが、時間とともに見えづらくなります。
- forループの最初の行に、制御変数、終了値、増分値を区切るカンマが合計で2つあることを確認してください。
2番目のループ(光の減少)
光を暗くするために、2番目のforループを使用します。このループの値は逆になるので、光は明るく始まり、毎秒暗くなります。
時間が経つにつれて明るさを減少させる2番目のforループをコーディングします。解決策は以下のコードボックスにあります。次の値を使用してください:
- 制御変数 - currentBrightnessを5に設定します(前のループの終わり)。
- 終了 - 0、光を消します。
- 増分 - brightnessChangeを引きます。
-- 2番目のループでランプを暗くしますfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)end経験を実行します;光が明るくなり、その後暗くなるのが見えるはずです。
光を繰り返す
現在、光は一度だけ点灯して消えます。ランプが連続して点灯・消灯するようにするために、forループを繰り返しのwhileループ内に配置します。
forループの下に新しいwhileループを作成します。
while true doend両方のforループをwhileループ内に配置します。whileループと区別しやすいように、forループのインデントを調整します。
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ループ内にネストされています。コーダーがさらに多くのループを追加する際は、コードが読みやすくなるようにインデントをチェックしてください。