เพื่อฝึกลูป 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 สองลูป หนึ่งลูปจะนับขึ้นเพื่อทำให้โคมไฟสว่างขึ้น และลูปอีกหนึ่งจะนับลงเพื่อทำให้มืดลง ลูปแต่ละลูปจะมีตัวแปรควบคุมชื่อ 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รันประสบการณ์ของคุณ คุณควรเห็นแสงสว่างขึ้นแล้วมืดลง
ทำให้ไฟทำซ้ำ
ตอนนี้ไฟจะเปิดและปิดเพียงครั้งเดียว เพื่อให้โคมไฟเรืองแสงสลับกันตลอดเวลา ลูป for จะถูกวางภายในลูป 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.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 เมื่อนักเขียนโค้ดเพิ่มลูปมากขึ้น ควรตรวจสอบการเยื้องเพื่อให้โค้ดอ่านได้ง่าย