发光灯与循环

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

要练习循环,你会创建一个逐渐变亮的灯,然后在一段时间后褪色。这个脚本可以应用到任何项目中的灯,例如街灯或发光的水晶。

设置零件和脚本

灯将是一个带有灯光和脚本的部分。

  1. 为了使其更容易看到灯光,请将游戏世界变更为 夜晚 。在Explorer>Lighting>更改 ClockTime 为0。

    image
  2. 创建一个名为 Lamp 的新零件或模型。

  3. 选择灯,并添加一个 灯光 ,例如一个 PointLight 或 SpotLight。 您将使用灯的亮度属性来创建一个发光的灯。

  4. 在灯中,添加一个名为 GlowScript 的新脚本。在那个脚本中,创建变量来存储灯部和聚光灯。


    local lightPart = script.Parent
    local light = lightPart.SpotLight
  5. 接下来,创建一个变量来持有灯光的亮度每次循环运行时会变化的多少。然后,添加另一个变量来确定灯光在运行再次之前会等待的秒数。


    -- 灯光的亮度每次会改变多少
    local brightnessChange = 1
    -- 每秒钟的时间,光亮度会改变多少
    local timeChange = 1

使灯光发光

灯将使用两个 对循环使用, 一个数量上升以使灯更亮, 一个数量下降以使灯更暗。 每个对循环的控制变量都有一个名为当前亮度的控制变量。 因此,当控制变量上升和下降时,灯的亮度也会相应提升或降低。

第一个循环(光明增加)

记住,for 循环始于关键字 for 并跟随一个控制变量。 此脚本将设置灯光的亮度值到控制变量。

  1. 使用以下值编写循环代码。请记得使控制变量和尾值用分号分开。

    • 控制变量 : currentBrightness
    • 开始值 : 0
    • 结束值 : 5
    • 增量值 : brightnessChange

    local timeChange = 1
    for currentBrightness = 0, 5, brightnessChange do
    end
  2. 在 for 循环中,将灯光的亮度属性设置为 light.Brightness = currentBrightness 。现在,当 for 循环运行时,灯光会变得更亮。


    for currentBrightness = 0, 5, brightnessChange do
    light.Brightness = currentBrightness
    end
  3. 所以变化不会发生在一个时间,添加一个使用值在 timeChange 的等待函数。


    for currentBrightness = 0, 5, brightnessChange do
    light.Brightness = currentBrightness
    task.wait(timeChange)
    end
  4. 运行游戏以看到每秒钟的光明增加。

如果您无法在第一个循环中看到亮度的变化:

  • 确保 light.Brightness = currentBrightness 在你的循环中的前后。
  • 检查 timeChange 是否至少 1 或更高。较小的数字会使亮度更快,但随着时间的推移会变得更难以见到。
  • 请确保第一个行的内容包括两个总分号,用于分离控制变量、端值和增量值。

第二个循环(光明减少)

要将灯光 dim,请使用第二个 for loop。这个循环的值将被反向,因此灯光将始终亮,每秒钟开始变暗。

  1. 为时间过程中亮度下降的代码写一段代码。解决方案在下面的代码框中。使用以下值:

    • 控制变量 - currentBrightness 设置为 5,结束上一循环。
    • 结束 - 0,关灯。
    • 增量 - 减去 brightnessChange

    -- 第二个循环减暗灯
    for currentBrightness = 5, 0, -brightnessChange do
    light.Brightness = currentBrightness
    task.wait(timeChange)
    end
  2. 运行您的游戏;您应该看到灯光变亮,然后变暗。

使灯光重复

现在,灯只会打开和关闭一次。为了使灯在不间断地打开和关闭,请将循环放置在重复中。

  1. 在 for 循环下,创建一个新的 while 循环。


    while true do
    end
  2. 将两个放置在一个时间循环内。在时间循环内插入两个以便从时间循环中容易分开。


    while true do
    for currentBrightness = 0, 5, brightnessChange do
    light.Brightness = currentBrightness
    task.wait(timeChange)
    end
    for currentBrightness = 5, 0, -brightnessChange do
    light.Brightness = currentBrightness
    task.wait(timeChange)
    end
    end
  3. 运行游戏以观看灯光的亮度和阴暗持续变化。

已完成的灯光脚本

脚本的完整版本可以在下面引用。


-- 存储这个灯与灯泽的关系
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
-- 第二个循环关闭灯
for count = 5, 0, -brightnessChange do
light.Brightness = count
task.wait(timeChange)
end
end

概要

在项目中创建复杂的效果,脚本可以使用多个循环,甚至是不同类型的循环的组合。 要在项目中编写闪光灯,两个循环被嵌套在一个时间循环中。 当编码者添加更多循环时,请确保检查代码的折射,以便代码可以轻松阅已读。