要练习循环,你会创建一个逐渐变亮的灯,然后在一段时间后褪色。这个脚本可以应用到任何项目中的灯,例如街灯或发光的水晶。
设置零件和脚本
灯将是一个带有灯光和脚本的部分。
为了使其更容易看到灯光,请将游戏世界变更为 夜晚 。在Explorer>Lighting>更改 ClockTime 为0。
创建一个名为 Lamp 的新零件或模型。
选择灯,并添加一个 灯光 ,例如一个 PointLight 或 SpotLight。 您将使用灯的亮度属性来创建一个发光的灯。
在灯中,添加一个名为 GlowScript 的新脚本。在那个脚本中,创建变量来存储灯部和聚光灯。
local lightPart = script.Parentlocal light = lightPart.SpotLight接下来,创建一个变量来持有灯光的亮度每次循环运行时会变化的多少。然后,添加另一个变量来确定灯光在运行再次之前会等待的秒数。
-- 灯光的亮度每次会改变多少local brightnessChange = 1-- 每秒钟的时间,光亮度会改变多少local timeChange = 1
使灯光发光
灯将使用两个 对循环使用, 一个数量上升以使灯更亮, 一个数量下降以使灯更暗。 每个对循环的控制变量都有一个名为当前亮度的控制变量。 因此,当控制变量上升和下降时,灯的亮度也会相应提升或降低。
第一个循环(光明增加)
记住,for 循环始于关键字 for 并跟随一个控制变量。 此脚本将设置灯光的亮度值到控制变量。
使用以下值编写循环代码。请记得使控制变量和尾值用分号分开。
- 控制变量 : currentBrightness
- 开始值 : 0
- 结束值 : 5
- 增量值 : brightnessChange
local timeChange = 1for currentBrightness = 0, 5, brightnessChange doend在 for 循环中,将灯光的亮度属性设置为 light.Brightness = currentBrightness 。现在,当 for 循环运行时,灯光会变得更亮。
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnessend所以变化不会发生在一个时间,添加一个使用值在 timeChange 的等待函数。
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)end运行游戏以看到每秒钟的光明增加。
如果您无法在第一个循环中看到亮度的变化:
- 确保 light.Brightness = currentBrightness 在你的循环中的前后。
- 检查 timeChange 是否至少 1 或更高。较小的数字会使亮度更快,但随着时间的推移会变得更难以见到。
- 请确保第一个行的内容包括两个总分号,用于分离控制变量、端值和增量值。
第二个循环(光明减少)
要将灯光 dim,请使用第二个 for loop。这个循环的值将被反向,因此灯光将始终亮,每秒钟开始变暗。
为时间过程中亮度下降的代码写一段代码。解决方案在下面的代码框中。使用以下值:
- 控制变量 - currentBrightness 设置为 5,结束上一循环。
- 结束 - 0,关灯。
- 增量 - 减去 brightnessChange 。
-- 第二个循环减暗灯for currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)end运行您的游戏;您应该看到灯光变亮,然后变暗。
使灯光重复
现在,灯只会打开和关闭一次。为了使灯在不间断地打开和关闭,请将循环放置在重复中。
在 for 循环下,创建一个新的 while 循环。
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-- 第二个循环关闭灯for count = 5, 0, -brightnessChange dolight.Brightness = counttask.wait(timeChange)endend
概要
在项目中创建复杂的效果,脚本可以使用多个循环,甚至是不同类型的循环的组合。 要在项目中编写闪光灯,两个循环被嵌套在一个时间循环中。 当编码者添加更多循环时,请确保检查代码的折射,以便代码可以轻松阅已读。