เพื่อฝึกฝนลูป for คุณจะสร้างโคมไฟที่ค่อยๆ เรืองแสงสว่างขึ้นและค่อยๆ มืดลงตามเวลา สคริปต์นี้สามารถนำไปใช้กับไฟอื่นๆ ในโปรเจกต์ได้ ไม่ว่าจะเป็นไฟถนนหรือคริสตัลเรืองแสง
ตั้งค่าองค์ประกอบและสคริปต์
โคมไฟจะเป็นองค์ประกอบที่มีไฟและสคริปต์แนบอยู่
เพื่อให้มองเห็นไฟได้ง่ายขึ้น ให้เปลี่ยนโลก 3D เป็น เวลากลางคืน ใน Explorer ⟩ Lighting เปลี่ยน ClockTime เป็น 0.

สร้างองค์ประกอบหรือโมเดลใหม่ชื่อว่า Lamp.

เลือก Lamp และเพิ่ม ไฟ เช่น PointLight หรือ SpotLight คุณจะทำงานกับคุณสมบัติความสว่างของไฟเพื่อสร้างโคมไฟเรืองแสง

ใน Lamp ให้เพิ่มสคริปต์ใหม่ชื่อว่า GlowScript ในสคริปต์นั้นให้สร้างตัวแปรเพื่อเก็บองค์ประกอบโคมไฟและไฟจุด
local lightPart = script.Parentlocal light = lightPart.SpotLightถัดไป สร้างตัวแปรเพื่อเก็บว่าความสว่างของไฟจะเปลี่ยนแปลงมากน้อยเพียงใดในแต่ละครั้งที่ลูปทำงาน จากนั้นเพิ่มตัวแปรอีกตัวสำหรับจำนวนวินาทีที่ลูปจะรอคอยก่อนที่จะทำงานอีกครั้ง
-- ความสว่างของไฟจะเปลี่ยนแปลงมากน้อยเพียงใดในแต่ละครั้งlocal brightnessChange = 1-- ความถี่ในวินาทีที่ไฟจะเปลี่ยนความสว่างlocal timeChange = 1
ทำให้โคมไฟเรืองแสง
โคมไฟจะใช้ลูป for สองตัว ตัวหนึ่งนับขึ้นเพื่อทำให้โคมไฟสว่างขึ้น และอีกตัวหนึ่งนับลงเพื่อทำให้มืดลง ลูป for แต่ละตัวจะมีตัวแปรควบคุมชื่อว่า currentBrightness ด้วยวิธีนี้ เมื่อค่าตัวแปรควบคุมของลูป for ขึ้นและลง ความสว่างของไฟก็จะขึ้นและลงตามไปด้วย
ลูปแรก (เพิ่มความสว่าง)
จำไว้ว่าลูป 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เพื่อไม่ให้การเปลี่ยนแปลงเกิดขึ้นในครั้งเดียว ให้เพิ่มฟังก์ชัน wait โดยใช้ค่าจาก timeChange
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endรันเกมเพื่อดูว่าไฟเพิ่มความสว่างขึ้นทุกวินาที
หากคุณไม่สามารถเห็นการเปลี่ยนแปลงความสว่างตามเวลาในลูปแรก:
- ตรวจสอบให้แน่ใจว่า light.Brightness = currentBrightness อยู่ระหว่าง do และ end ของลูป for ของคุณ
- ตรวจสอบว่า timeChange มีค่าอย่างน้อย 1 หรือสูงกว่า ตัวเลขที่เล็กกว่าจะทำให้ความสว่างเปลี่ยนแปลงได้เร็วขึ้น แต่จะมองเห็นได้ยากขึ้นตามเวลา
- ตรวจสอบให้แน่ใจว่าบรรทัดแรกของลูป for ของคุณมีเครื่องหมายจุลภาคทั้งหมดสองตัวแยกตัวแปรควบคุม ค่าจบ และค่าการเพิ่ม
ลูปที่สอง (ลดความสว่าง)
เพื่อทำให้ไฟมืดลง ให้ใช้ลูป for ที่สอง ค่าของลูปนี้จะถูกกลับด้านเพื่อให้ไฟเริ่มสว่างและค่อยๆ มืดลงทุกวินาที
เขียนโค้ดลูป for ที่สองเพื่อลดความสว่างตามเวลา โซลูชันอยู่ในกล่องโค้ดด้านล่าง ใช้ค่าต่อไปนี้:
- ตัวแปรควบคุม - currentBrightness ตั้งค่าเป็น 5 ซึ่งเป็นค่าจบของลูปก่อนหน้า
- ค่าจบ - 0 ปิดไฟ
- ค่าการเพิ่ม - ลบ brightnessChange
-- ลูปที่สองทำให้โคมไฟมืดลงfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endรันเกมของคุณ คุณควรเห็นไฟสว่างขึ้นแล้วค่อยๆ มืดลง
ทำให้ไฟทำซ้ำ
ตอนนี้ ไฟจะเปิดและปิดเพียงครั้งเดียว เพื่อทำให้โคมไฟเรืองแสงต่อเนื่อง เปิดและปิด ไฟจะถูกวางไว้ภายในลูป while ที่ทำซ้ำ
ใต้ลูป for ให้สร้างลูป while ใหม่
while true doendวางลูป for ทั้งสองไว้ภายในลูป while จัดระเบียบลูป for ให้มีการเยื้องเพื่อให้แยกแยะได้ง่ายจากลูป 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.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สรุป
เพื่อสร้างเอฟเฟกต์ที่ซับซ้อนในโปรเจกต์ สคริปต์สามารถใช้ลูปหลายตัว และแม้แต่การรวมกันของลูปประเภทต่างๆ เพื่อเขียนโค้ดไฟเรืองแสง ลูปสองตัวจะถูกซ้อนอยู่ภายในลูป while เมื่อผู้เขียนโค้ดเพิ่มลูปมากขึ้น ควรตรวจสอบการเยื้องเพื่อให้โค้ดอ่านง่าย