การสร้างไฟระยิบระยับ

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

แสงระยิบระยับ เป็นสứcแรงที่มีประสิทธิภาพในการส่งผลต่อสภาพเสียงของสภาพแวดล้อม ตัวอย่างเช่น บ้านที่มีแสงสว่างอย่างสม่ำเสมอสามารถ

การสร้างสรรค์3D ทั้งหมด มีหลายวิธีในการบรรลุเป้าหมายใด ๆ โดยเฉพาะ ในคู่มือนี้ คุณสามารถสร้างแอนิเมชันไฟรีโดยใช้เครื่องมื

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

  • ความสว่าง NumberSequence เพื่อส่งผลกระทบต่อความสว่างของโคมไฟในเวลาต่อมา
  • ค่าความยาวของสถานะเวลาที่เปิดติดของแต่ละสเต็ป
  • A Script ที่กำหนดวิธีการที่สองค่าทำงานร่วมกับลูกของแม่พิมพ์ MeshParts เพื่อส่องแสงไฟของแม่พิมพ์

การนำตัวอย่างแสงเข้ามา

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

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

  1. ใน หน้าต่าง Explorer รุ่น Workspace จะแสดงรายการ上下文菜单.

  2. เลือก ใส่จากไฟล์… ตัวเลือกเบราว์ไฟล์

  3. เลือก BankersLamp .rbxm แล้วคลิกปุ่ม เปิด ตัวแบบจะปรากฏในหน้าต่าง โมเดลจะแสดงในหน้าต่าง

การสร้างตัวเลขความสว่าง

A NumberSequence เป็นรูปแบบข้อมูลที่表示一系列从 0 ถึง 1 อินสแตนซ์รูปแบบข้อมูลนี้มีประโยชน์สำหรับการสร้างแสงระยิบระยับเพราะคุณสามา

แกน X ของ NumberSequence เป็นเวลา และแกน Y เป็นความสว่างเฉลี่ย แต่ละตารางในต้นสายการเปลี่ยนแ

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

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

  1. เพิ่มค่าตัวละคร NumberSequencer ให้กับโมเดลโคมไฟ

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

    2. ในหน้าต่าง โปรพีเพอร์ตี้ ไปที่ส่วน คุณลักษณะ และคลิกปุ่ม เพิ่มคุณลักษณะ ประกาศบนหน้า 1>เพิ่มคุณลักษณะ1> จะปรากฏขึ้น

    3. ใน กระทู้เพิ่มลักษณะ โดย

      1. ในฟิลด์ ชื่อ ใส่ BrightnessCurve 2. คลิกเมนู พิมพ์ แล้วเลือก ตัวอักษร 3. คลิกปุ่ม บันทึก ใหม่. สัญลักษณ์ใหม่จะปรากฏในส่วน คุณลักษณะ ของ หน้าต่างโปรพีเพรตี้
  2. เลือกสมบัติภาพใหม่ BrightnessCurve แล้วคลิกปุ่ม ตัวเลขจะปรากฏขึ้น

  3. ทำหนึ่งในสามารถกระทําต่อไปนี้:

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

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

การสร้างระยะเวลาของห่วงโซ่

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

เพื่อสร้างระยะเวลาของวงจร:

  1. เพิ่มค่าความยืนยาวของวงแหวนใหม่ให้แก่แบบโคมไฟ

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

    2. ในหน้าต่าง โปรพีเพอร์ตี้ ไปที่ส่วน คุณลักษณะ และคลิกปุ่ม เพิ่มคุณลักษณะ ประกาศบนหน้า 1>เพิ่มคุณลักษณะ1> จะปรากฏขึ้น

    3. ใน กระทู้เพิ่มลักษณะ โดย

      1. ในฟิลด์ ชื่อ ใส่ LoopDuration 2. คลิกเมนู พิมพ์ แล้วเลือก จํานวน 3. คลิกปุ่ม บันทึก ใหม่. สัญลักษณ์ใหม่จะปรากฏในส่วน คุณลักษณะ ของ หน้าต่างโปรพีเพรตี้
  2. ตั้งค่าค่านิยมใหม่ LoopDuration เป็น 1 ต่อ เรียก NumberSequence เพื่อทำซ้ำหลังจากหนึ่งวินาที

การเขียนสคริปต์ของไฟฉาย

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

เพื่อสคริปต์การเริ่มต้นเปลวไฟ:

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

local RunService = game:GetService("RunService")
-- รับค่าตัวละคริสต์ที่กำหนดในแบบ
local brightnessCurve = script.Parent:GetAttribute("BrightnessCurve")
local loopDuration = script.Parent:GetAttribute("LoopDuration")
-- เก็บอ้างอิงไปยังตัวอินสแตนซ์ของโมเดลที่จะเปลี่ยนแปลง
local light = script.Parent.lamp_hood.SpotLight
local bulb = script.Parent.lightbulb
local beam = script.Parent.lamp_hood.Beam
-- เก็บค่าต้นฉบับของคุณสมบัติที่จะเปลี่ยนแปลง
local origLightBrightness = light.Brightness
local origBeamBrightness = beam.Brightness
local origBulbColor = bulb.Color
-- รับค่าของ NumberSequencer (ns) ในเวลาที่กำหนด (nsTime)
function evaluateNumberSequence(ns: NumberSequence, nsTime: number)
-- หากเราอยู่ที่ 0 หรือ 1 ก็จะส่งค่าของจุดสวิตช์แรกหรือล่าสุด
if nsTime == 0 then
return ns.Keypoints[1].Value
end
if nsTime == 1 then
return ns.Keypoints[#ns.Keypoints].Value
end
-- มิฉะนั้น, ขั้นตอนผ่านแต่ละคู่ของจุดสังเกตขั้นต่อไป.
for i = 1, #ns.Keypoints - 1 do
-- รับค่าเฉพาะของตัวอักษรปัจจุบันและถัดไป
local currKp = ns.Keypoints[i]
local nextKp = ns.Keypoints[i + 1]
-- หาก nsTime อยู่ระหว่างเวลาของจุดมุ่งหมาย
if nsTime >= currKp.Time and nsTime < nextKp.Time then
-- คํานวณว่าNSTimeอยู่ระหว่างเวลาของจุดเวลาหลักสองครั้งนี้เรียกว่า alpha
local alpha = (nsTime - currKp.Time) / (nextKp.Time - currKp.Time)
-- กลับค่าที่อยู่ระหว่างจุลภาคในขณะที่ใช้ alpha
return currKp.Value + (nextKp.Value - currKp.Value) * alpha
end
end
end
RunService.Heartbeat:Connect(function()
-- แก้ไขเวลาของตัวอักษรตัวเลข (ระหว่าง 0 และ 1)
local t = time() / loopDuration
local numberSequenceTime = t - math.floor(t)
-- ได้รับค่าของ NumberSequencer ในเวลานี้
local brightnessValue = evaluateNumberSequence(brightnessCurve, numberSequenceTime)
-- ปรับความสว่างและสีตามค่านี้
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 ตามเวลาปัจจุบัน.
    • เวลาอยู่ระหว่าง 0 และ 1 เนื่องจากเหล่านี้เป็นตัวแทนของจุดเริ่มต้นและจุดสิ้นสุดของตัวเลขด้วย
  2. แก้ไขสำหรับค่า ( brightnessValue ) ของ brightnessCurve``Datatype.NumberSequence ในเวลา 1> numberSequencerTime1> .
    • evaluateNumberSequence() คำนวณมูลค่าที่เกี่ยวข้องกับเวลาสำหรับใด ๆ NumberSequence
    • ค่านี้ใช้เป็นค่าความสว่างเฉลี่ยที่ใช้กับโปรไฟล์ที่เปลี่ยนแปลงตามเวลา
  3. เปลี่ยนคุณสมบัติของโคมไฟโดยการเพิ่ม brightnessValue โดยความสว่างของโคมไฟ ความสว่างของลำแสง และสีของหลอด

การเปลี่ยนแปลงเหล่านี้จะทำให้เกิดปัญหาเรืองแสงด้านล่าง