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

ランプという名前の新しいパートまたはモデルを作成します。

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

ランプに、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.Parent
light = lightPart.SpotLight
-- ライトの明るさが毎回どれだけ変化するか
local brightnessChange = 1
-- ライトの明るさが変化する間隔(秒)
local timeChange = 0.2
while true do
for count = 0, 5, brightnessChange do
light.Brightness = count
task.wait(timeChange)
end
-- ライトを消すための2つ目のループ
for count = 5, 0, -brightnessChange do
light.Brightness = count
task.wait(timeChange)
end
endまとめ
プロジェクトで複雑な効果を作成するために、スクリプトは複数のループや異なるタイプのループの組み合わせを使用できます。光るライトをコーディングするために、2つのループがwhileループ内にネストされています。コーダーがさらに多くのループを追加する際は、インデントを確認してコードが読みやすくなるようにしましょう。