สร้างไฟกระพริบ

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ไฟกระพริบ เป็นพลังที่มีอิทธิพลอย่างมากในการกำหนดโทนเสียงของสภาพแวดล้อม ตัวอย่างเช่น บ้านที่มีแสงสว่างคงที่สามารถรู้สึกอบอุ่นและเป็นมิตร แต่ถ้าคุณเพิ่มไฟกระพริบไปยังทางเดินของบ้านเดียวกัน มันจะกลายเป็นบรรยากาศที่น่าหวาดหวั่นและอาจบ่งบอกถึงอันตรายที่อาจเกิดขึ้นข้างหน้า โดยการสร้างแบบจำลองและการเขียนสคริปต์แหล่งแสงต่าง ๆ ภายในประสบการณ์ของคุณอย่างมีกลยุทธ์ คุณสามารถเพิ่มระดับใหม่ให้กับการเล่าเรื่องในสภาพแวดล้อมของคุณ

เช่นเดียวกับการสร้าง 3D ทั้งหมด มีหลายวิธีในการบรรลุเป้าหมายเฉพาะ ในคู่มือนี้ คุณสามารถสร้างการเคลื่อนไหวไฟกระพริบได้อย่างรวดเร็ว โดยใช้เครื่องมือและวิธีการที่มีให้เฉพาะใน Studio พร้อมด้วยทรัพยากรพื้นฐานเพียงไม่กี่รายการ รวมถึงไฟล์ .rbxm สำหรับรูปแบบของโคมไฟธนาคารที่มี Class.MeshParts เป็นลูกซึ่งคุณสามารถปรับแต่งให้เหมาะกับความสวยงามของประสบการณ์ของคุณเอง

ในวิธีการต่อไปนี้ในการสร้างไฟกระพริบ ให้ติดตามแต่ละส่วนเพื่อเรียนรู้วิธีการสร้าง:

  • ความสว่าง NumberSequence เพื่อมีอิทธิพลต่อความสว่างของโคมไฟในช่วงเวลาหนึ่ง
  • แอตทริบิวต์ระยะเวลาลูปเพื่อกำหนดระยะเวลาที่แต่ละลูปไฟกระพริบต้องใช้
  • Script ที่กำหนดว่าคุณลักษณะทั้งสองทำงานร่วมกับลูกของแบบจำลอง MeshParts อย่างไรเพื่อให้โคมไฟกระพริบ

นำเข้าโคมไฟตัวอย่าง

คู่มือนี้ใช้ไฟล์ .rbxm ที่สามารถดาวน์โหลดได้ซึ่งเป็นโมเดลของโคมไฟธนาคารที่ปรับแต่งได้อย่างมีคุณภาพสูงเพื่อแสดงเทคนิคไฟกระพริบ คุณสามารถใช้โมเดลนี้เพื่เข้าใจหลักการพื้นฐาน จากนั้นนำไปใช้กับโมเดลของคุณเองที่คุณสร้างภายใน Studio หรือซอฟต์แวร์การสร้างโมเดลของบริษัทอื่น

เพื่อนำเข้า BankersLamp .rbxm:

  1. ในหน้าต่าง Explorer ให้คลิกขวาที่ Workspace เมนูบริบทจะแสดง

  2. เลือก Insert From File… ตัวเลือกการเรียกดูไฟล์จะแสดง

  3. เลือก BankersLamp .rbxm จากนั้นคลิกที่ปุ่ม Open โมเดลจะแสดงในภาพมุมมอง

สร้าง NumberSequence ความสว่าง

NumberSequence เป็นประเภทข้อมูลที่แสดงถึงชุดค่าตัวเลขจาก 0 ถึง 1 ในช่วงชีวิตของอินสแตนซ์ ประเภทข้อมูลนี้มีประโยชน์สำหรับการสร้างไฟกระพริบ เพราะคุณสามารถระบุได้ว่าคุณต้องการให้ความสว่างของแสงโคมไฟเปลี่ยนแปลงอย่างไรในช่วงชีวิตของมัน และเมื่อคุณเปลี่ยนความสว่างจากความเข้มเต็มที่เป็นไม่มีแสงใดๆ เลยในระยะเวลาสั้นๆ คุณจะสามารถบรรลุเอฟเฟกต์การกระพริบได้

แกน X ของ NumberSequence แสดงถึงเวลา และแกน Y แสดงถึงความสว่างสัมพัทธ์ สี่เหลี่ยมแต่ละตัวที่จุดเริ่มต้นและจุดสิ้นสุดของลำดับหมายเลขคือ keypoint ที่กำหนดค่าของคุณสมบัติในจุดนั้นของความสว่างของแสง เมื่อคุณสร้าง NumberSequence เป็นครั้งแรก กราฟจะเป็นเส้นตรงและแสงจะมีความเข้มความสว่างเท่าเดิมตลอดช่วงชีวิต แต่โดยการเพิ่มและเลื่อน keypoint รอบๆ คุณสามารถสร้างเส้นโค้งภายในลำดับและเปลี่ยนความสว่างของโคมไฟตามเวลา

ในขณะที่โคมไฟไม่มี NumberSequence ความสว่างโดยเริ่มต้น แต่คุณสามารถสร้างแอตทริบิวต์ความสว่าง ตั้งค่าเป็นประเภท NumberSequence จากนั้นทดลองโดยการเพิ่ม keypoints ด้วยค่าที่แตกต่างกันจนกว่าแสงจะกระพริบตามจังหวะที่คุณต้องการ

เพื่อสร้าง NumberSequence ความสว่าง:

  1. เพิ่มแอตทริบิวต์ NumberSequence ใหม่ลงในโมเดลโคมไฟ

    1. ในหน้าต่าง Explorer ให้เลือกโมเดลโคมไฟ

    2. ในหน้าต่าง Properties ให้ไปที่ส่วน Attributes และคลิกที่ปุ่ม Add Attribute กล่องโต้ตอบ Add Attribute จะปรากฏขึ้น

    3. ในกล่องโต้ตอบ Add Attribute,

      1. ในฟิลด์ Name ให้ป้อน BrightnessCurve.

      2. คลิกที่เมนูดรอปดาวน์ Type จากนั้นเลือก NumberSequence.

      3. คลิกที่ปุ่ม Save แอตทริบิวต์ใหม่จะแสดงในส่วน Attributes ของหน้าต่าง Properties.

  2. เลือกคุณสมบัติ BrightnessCurve ใหม่ จากนั้นคลิกที่ปุ่ม ป๊อปอัปลำดับหมายเลขจะแสดง

  3. ทำหนึ่งในขั้นตอนต่อไปนี้:

    • เพื่อเปลี่ยนความสว่างในจุดหนึ่ง ให้คลิกที่ keypoint และลากขึ้นหรือลง หรือป้อนค่าในฟิลด์ Value.
    • เพื่อแทรก keypoints ใหม่ ให้คลิกที่จุดใดจุดหนึ่งในกราฟ
    • เพื่อลบ keypoint ให้เลือก keypoint นั้นแล้วกดปุ่ม Delete.
    • เพื่อเพิ่มช่วงแบบสุ่มสำหรับความสว่าง ให้คลิกที่ keypoint ใดก็ได้และลากเส้นหุ้มขึ้นหรือลง ในช่วงเวลานั้นแสงจะแสดงที่ความสว่างแบบสุ่มระหว่างเส้นหุ้มสีชมพู

ตัวอย่างเช่น กราฟต่อไปนี้ทำให้แสงกระพริบไปที่ความสว่างเต็มที่สำหรับการกระพริบครั้งแรก ความสว่าง 50% สำหรับการกระพริบครั้งที่สอง จากนั้น 75% สำหรับการกระพริบครั้งที่สาม

สร้างระยะเวลาลูป

ตอนนี้ที่คุณมี NumberSequence เพื่อกำหนดว่าความสว่างของแสงโคมไฟเปลี่ยนแปลงอย่างไรในช่วงชีวิตของมัน คุณต้องกำหนดระยะเวลาที่คุณต้องการให้ลูปกระพริบใช้ กล่าวคือ ระยะเวลาลูปนี้จะควบคุมความถี่ที่ NumberSequence ทำซ้ำในหน่วยเป็นวินาที

เพื่อสร้างระยะเวลาลูป:

  1. เพิ่มแอตทริบิวต์ระยะเวลาลูปใหม่ลงในโมเดลโคมไฟ

    1. ในหน้าต่าง Explorer ให้เลือกโมเดลโคมไฟ

    2. ในหน้าต่าง Properties ให้ไปที่ส่วน Attributes และคลิกที่ปุ่ม Add Attribute กล่องโต้ตอบ Add Attribute จะปรากฏขึ้น

    3. ในกล่องโต้ตอบ Add Attribute,

      1. ในฟิลด์ Name ให้ป้อน LoopDuration.

      2. คลิกที่เมนูดรอปดาวน์ Type จากนั้นเลือก Number.

      3. คลิกที่ปุ่ม Save แอตทริบิวต์ใหม่จะแสดงในส่วน Attributes ของหน้าต่าง Properties.

  2. ตั้งค่าแอตทริบิวต์ LoopDuration ใหม่ให้เป็น 1 ซึ่งหมายความว่าให้ NumberSequence ทำซ้ำหลังจากหนึ่งวินาที

เขียนสคริปต์ไฟกระพริบ

ตอนนี้ที่คุณมีทุกองค์ประกอบในการควบคุมความสว่างของโคมไฟตามช่วงชีวิตของมันแล้ว เป็นเวลาที่จะสร้าง Script ที่จะทำให้ทุกอย่างทำงานร่วมกันและทำให้แสงกระพริบ

เพื่อเขียนสคริปต์การกระพริบไฟ:

  1. ในหน้าต่าง Explorer ให้ชี้ไปที่โมเดลโคมไฟและคลิกปุ่ม ⊕ เมนูบริบทจะแสดง
  2. จากเมนู ให้แทรก Script
  3. ในสคริปต์ใหม่ ให้ป้อนดังนี้:

local RunService = game:GetService("RunService")
-- Gets the attribute values set on the model.
local brightnessCurve = script.Parent:GetAttribute("BrightnessCurve")
local loopDuration = script.Parent:GetAttribute("LoopDuration")
-- Stores references to the model's instances that will change.
local light = script.Parent.lamp_hood.SpotLight
local bulb = script.Parent.lightbulb
local beam = script.Parent.lamp_hood.Beam
-- Stores properties' original values that will change.
local origLightBrightness = light.Brightness
local origBeamBrightness = beam.Brightness
local origBulbColor = bulb.Color
-- Gets the value of the NumberSequence (ns) at a specific time (nsTime)
function evaluateNumberSequence(ns: NumberSequence, nsTime: number)
-- If we are at 0 or 1, returns the first or last keypoint's value, respectively.
if nsTime == 0 then
return ns.Keypoints[1].Value
end
if nsTime == 1 then
return ns.Keypoints[#ns.Keypoints].Value
end
-- Otherwise, steps through each sequential pair of keypoints.
for i = 1, #ns.Keypoints - 1 do
-- Gets the current and next keypoint.
local currKp = ns.Keypoints[i]
local nextKp = ns.Keypoints[i + 1]
-- If nsTime is between the keypoints' times,
if nsTime >= currKp.Time and nsTime < nextKp.Time then
-- Calculates where nsTime lies between the keypoints' times, calls this alpha.
local alpha = (nsTime - currKp.Time) / (nextKp.Time - currKp.Time)
-- Returns the value between the points for nsTime using alpha.
return currKp.Value + (nextKp.Value - currKp.Value) * alpha
end
end
end
RunService.Heartbeat:Connect(function()
-- Solves for the NumberSequence's time (between 0 and 1).
local t = time() / loopDuration
local numberSequenceTime = t - (t // 1)
-- Gets the NumberSequence's value at this time.
local brightnessValue = evaluateNumberSequence(brightnessCurve, numberSequenceTime)
-- Adjusts brightness and color properties based on this value.
light.Brightness = origLightBrightness * brightnessValue
beam.Brightness = origBeamBrightness * brightnessValue
bulb.Color = Color3.new(
origBulbColor.r * brightnessValue,
origBulbColor.g * brightnessValue,
origBulbColor.b * brightnessValue
)
end)

เมื่อคุณ ทดสอบประสบการณ์ของคุณ การเชื่อมต่อเหตุการณ์ Heartbeat จะดำเนินการดังต่อไปนี้ในทุกเฟรม:

  1. แก้ไขเวลาของ numberSequenceTime ภายใน brightnessCurve NumberSequence ตามเวลาปัจจุบัน
    • เวลาอยู่ระหว่าง 0 และ 1 เนื่องจากนี่คือจุดเริ่มต้นและจุดสิ้นสุดของ NumberSequence ตามลำดับ
  2. แก้ไขค่าของ (brightnessValue) ของ brightnessCurve NumberSequence ที่เวลา numberSequenceTime
    • evaluateNumberSequence() คำนวณค่าที่เกี่ยวข้องกับเวลาสำหรับ NumberSequence ใดๆ
    • ค่านี้จะทำหน้าที่เป็นค่าความสว่างสัมพัทธ์เพื่อใช้กับคุณสมบัติที่เปลี่ยนแปลงตามเวลา
  3. เปลี่ยนคุณสมบัติของหลอดไฟโดยการคูณ brightnessValue ด้วยความสว่างของแสง ความสว่างของลำแสง และสีของหลอดไฟ

การเปลี่ยนแปลงเหล่านี้ในคุณสมบัติตลอดเวลาจะส่งผลให้เกิดเอฟเฟกต์กระพริบด้านล่างนี้

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ