要练习循环,你会创建一个灯,它会逐渐变亮,然后随着时间的推移会变暗。然后,该脚本可以应用到项目中的任何其他灯光,无论是街灯还是发光水晶。
设置零件和脚本
灯将是带有灯光和脚本的一部分。
为了更容易看到灯光,将游戏世界改为 夜晚时间 。在 Explorer > 照明 > 更改 时间钟 为 0。
创建一个名为灯的新部件或模型。
选择灯,并添加 光 ,例如点光源或聚光灯。你将使用灯光的亮度属性来创建发光灯。
在灯中,添加名为 GlowScript 的新脚本。在该脚本中,创建变量来存储灯部分和点光源。
local lightPart = script.Parentlocal light = lightPart.SpotLight接下来,创建一个变量来保存灯光亮度每次循环运行时会发生多大变化。然后,添加另一个变量,告诉循环在何时需要等待多少秒才能再次运行。
-- 光的亮度每次会改变多少local brightnessChange = 1-- 光在几秒内多久会改变亮度local timeChange = 1
使灯光亮起
灯将使用两个 循环 , 一个用于使灯更亮, 另一个用于使灯变暗。每个循环都会有一个控制变量叫做当前亮度。这样,当循环控制变量上下移动时,灯光的亮度也会上下移动。
第一循环(光增加)
请记住,for循环以关键字 for 开始,然后跟随控制变量。该脚本将将灯光的亮度值设置为控制变量的值。
使用以下值编写循环 for。记得用逗号分开控制变量和结束值。
- 控制变量 :currentBrightness
- 起始值 :0
- 终值 :5
- 增量值 :brightnessChange
local timeChange = 1for currentBrightness = 0, 5, brightnessChange doend在 for 循环的范围内,通过输入 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 循环的开始和结束之间。
- 检查 timeChange 至少为 1 或更高。较小的数字会使亮度更快变化,但随着时间推移会更难看到。
- 确保你的 for 循环的第一行有两个总分号来分开控制变量、终端值和增量值。
第二循环(光降低)
要降低光亮度,请使用第二循环。该循环的值将被反转,使光亮度开始增加,每秒钟变暗。
编写一个第二个循环,降低亮度随着时间的推移。解决方案在下面的代码框中。使用以下值:
- 控制变量 - currentBrightness 设置为 5,最后循环的结束
- 结束 - 0,关闭灯光。
- 增量 - 减去 brightnessChange。
-- 第二循环淡化灯for currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)end运行您的游戏;您应该看到灯光变亮,然后变暗。
使光重复
现在,灯光只能打开和关闭一次。要使灯始终亮起并熄灭,循环将放置在重复而循环中。
在 for 循环下,创建一个新的 while 循环。
while true doend将两个循环放在 while 循环内。indent 循环以便它们更容易与 while 循环区分。
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
摘要
为了在项目中创建复杂的效果,脚本可以使用多个循环和甚至不同类型的循环组合。要编写发光灯光,两个循环被嵌套在 while 循环中。当编程师添加更多循环时,请确保检查引用符,以便代码易于已读。