Lighting
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
บริการ การจัดเตรียมแสงสว่างในประสบการณ์ ควบคุมการจัดเตรียมแสงสว่างในประสบการณ์ รวมถึงสถานที่ตั้งที่ปรับแต่งได้ที่คุณสามารถใช้เพื่อเปลี่ยนวิธีที่แสงปรากฏและโต้ตอบกับ
การจัดเตรียมแสง อาจมีวัตถุ Atmosphere เพื่อเรนเดอร์เอฟเฟกต์บรรยากาศที่เป็นจริงรวมถึงความหนาแน่นของอนุภาคประกาย เรือมต้น สี และความสว่าง ดูที่ เอฟเฟกต์บ
นอกจากนี้ การจัดเตรียมแสงสว่างเสริม (รวมกับ Workspace.CurrentCamera ) อาจมีเอฟเฟกต์หลังการประมวลผลเช่น Class.SunRaysEffect และ 1> Class.BlurEffect1> ดูที่
ตัวอย่างโค้ด
local Lighting = game:GetService("Lighting")
local TIME_SPEED = 60 -- 1 min = 1 hour
local START_TIME = 9 -- 9am
local minutesAfterMidnight = START_TIME * 60
local waitTime = 60 / TIME_SPEED
while true do
minutesAfterMidnight = minutesAfterMidnight + 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait(waitTime)
end
สรุป
คุณสมบัติ
สีสันการจุดไฟที่ใช้สำหรับพื้นที่ที่ถูกปิดกั้นจากท้องฟ้า เช่น พื้นที่ภายใน
ความเข้มของการสว่างในสถานที่
การแทนที่ตัวเลข (ในชั่วโมง) ของเวลาปัจจุบันของวันที่ใช้โดย Lighting
สีที่แสดงโดยแสงสะท้อนในพื้นผิวที่ตรงกันข้ามกับพื้นผิวที่เป็นดวงอาทิตย์หรือดวงจันทร์
สีที่แสดงโดยแสงสะท้อนจากพื้นผิวที่เป็นหน้าดวงอาทิตย์หรือดวงจันทร์
แสงสภาพแวดล้อมที่มาจากสภาพแวดล้อม
แสงสะท้อนแสงจากสภาพแวดล้อม
มูลค่าการเปลี่ยนแปลงการเปิดเผย
ความลึกจาก Workspace.CurrentCamera ในสตั๊ดที่จะมีหมอกที่เป็นอุปกรณ์ป้องกันฝุ่น
ความลึกจาก Workspace.CurrentCamera ในสตั๊ดที่เริ่มแสดงให้เห็นในหมอก
ลองติจูดภูมิศาสตร์ของฉากซึ่งส่งผลต่อเวลาการสร้าง Class.Lighting บนตำแหน่งดวงอาทิตย์และดวงจันทร์
เปิด/ปิดการใช้งานแสงที่มีอยู่ในเกม
สีแสงที่ใช้สำหรับพื้นที่ภายนอก
ควบคุมว่าภาพเงามีความละเอียดแคบแคบแคบ
กำหนดระบบการจัดเตรียมแสงสำหรับการเรนเดอร์โลก 3D ไม่สกริปต์ .
การแทนที่สตริง 24 ชั่วโมงของเวลาปัจจุบันที่ใช้โดย Lighting
วิธีการ
กลับจำนวนนาทีที่ผ่านมาหลังเที่ยงคืนเพื่อวัตถุประสงค์ในการจุดเปิดไฟ
กลับมาเป็น Vector3 ที่แสดงทิศทางของดวงจันทร์จากตำแหน่ง 0, 0, 0
กลับรูปโฉมของดวงจันทร์
กลับมาเป็น Vector3 ที่แสดงทิศทางของดวงอาทิตย์จากตำแหน่ง 0, 0, 0
ตั้งค่า Lighting.TimeOfDay และ Lighting.ClockTime ให้เป็นเวลานาทีหลังเที่ยงคืน
อีเวนต์
คุณสมบัติ
Ambient
สีสันการจุดไฟที่ใช้สำหรับพื้นที่ที่ถูกปิดกั้นจากท้องฟ้า เช่น พื้นที่ภายใน
ค่านี้เริ่มต้นที่ 0, 0, 0 (สีดำ)
ตราบเท่าที่ช่องสีแดง สีเขียวและสีน้ำเงินของสมบัตินี้ไม่เกินช่องสีเขียวใน Class.Lighting.OutdoorAmbient
หมายเหตุ, เมื่อ Lighting.GlobalShadows ถูกปิดใช้งานจะไม่มีความแตกต่างระหว่างพื้นที่ที่คลุมและพื้นที่ที่ไม่คลุม ในกรณีนี้ Lighting.OutdoorAmbient จะได้รับการเพิกเฉยและสี
สำหรับสีที่มีผลต่อสีของแสง โปรดดู Lighting.ColorShiftBottom และ Lighting.ColorShiftTop
Brightness
ความเข้มของการสว่างในสถานที่
การเปลี่ยนค่านี้จะส่งผลกระทบต่อการจุดแสงของแหล่งไฟ (ดวงอาทิตย์หรือดวงจันทร์) บนแผนที่ เมื่อความสว่างถูกตั้งไว้ที่
ขณะที่ค่านี้ไม่ได้ถูกติดตั้งไว้ ผลกระทบจะถูกแบ่งออกเป็นระหว่าง 0 และ 2 หมายถึงการตั้งค่าความสว่างให้เป็น 10 จะไม่แตกต่างกับการตั้งค่าเป็น 2
หมายเหตุ, Lighting.Ambient และ Lighting.OutdoorAmbient สามารถใช้เพื่อส่งผลกระทบต่อความสว่างของสถานที่ได้ เช่นการต
ClockTime
การแทนที่ตัวเลข (ในชั่วโมง) ของเวลาปัจจุบันของวันที่ใช้โดย Lighting
หมายเหตุ, ค่านี้ไม่ตรงกับเวลาเดิมของวัน และจะไม่เปลี่ยนแปลงในระหว่างเกม ยกเว้นว่าจะถูกเปลี่ยนโดยสคริป
สำหรับการวัด Lighting เวลาโดยใช้ตัวอักษรสตริงเป็นรูป 24 ชั่วโมง การเปลี่ยนแปลง Lighting.CurrentTime หรือการใช้ Lighting.CurrentTime จะเปลี่
ใช้ ClockTime ต้องการเวลาที่ปกติ:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
ใช้ Lighting.TimeOfDay ต้องใช้เวลาในการปรับปรุงและรูปแบบสตริง:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local seconds = minutesNormalised * 60local hours = string.format("%02.f", seconds//3600)local mins = string.format("%02.f", math.floor(seconds/60 - (hours*60)))local secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60))local timeString = hours..":"..mins..":"..secsLighting.TimeOfDay = timeStringtask.wait()end
การใช้ Lighting:SetMinutesAfterMidnight() ไม่ต้องใช้การประมวลผลเพิ่มเติม:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
ColorShift_Bottom
สีที่แสดงโดยแสงสะท้อนในพื้นผิวที่ตรงกันข้ามกับพื้นผิวที่เป็นดวงอาทิตย์หรือดวงจันทร์
พื้นผิวของ Class.BasePart ที่ได้รับผลกระทบจาก ColorShift_Bottom ขึ้นอยู่กับตำแหน่งและตำแหน่งของ Class.BasePart เมื่อเทียบกับตำแหน่งและตำแหน่งของดวงอาทิตย์หรือดวงจันทร์ โดยส่ว
เอฟเฟกต์นี้สามารถเพิ่มหรือลดได้โดยการเปลี่ยนแปลง Lighting.Brightness
ColorShift_Bottom ส่งผลกระทบให้กับพื้นผิวที่ตรงกันข้ามเพื่อ Lighting.ColorShift_Top
หมายเหตุ, Lighting.ColorShift_Top และ ColorShift_Bottom จะใช้งาน กับ Lighting.Ambient และ Lighting.OutdoorAmbient โปรพี่โปรพี่โ
ColorShift_Top
สีที่แสดงโดยแสงสะท้อนจากพื้นผิวที่เป็นหน้าดวงอาทิตย์หรือดวงจันทร์
พื้นผิวของ Class.BasePart ที่ได้รับผลกระทบจาก ColorShift_Top ขึ้นอยู่กับตำแหน่งและตำแหน่งของ Class.BasePart เมื่อเทียบกับตำแหน่งและตำแหน่งของดวงอาทิตย์หรือดวงจันทร์ โดยส่ว
เอฟเฟกต์นี้สามารถเพิ่มหรือลดได้โดยการเปลี่ยนแปลง Lighting.Brightness
ในขณะที่ ColorShift_Top ส่งผลกระทบต่อพื้นผิวที่สามารถเห็นได้ Lighting.ColorShift_Bottom ส่งผลกระทบต่อพื้นผิวที่ได้รับการปกป้องจากแสง
หมายเหตุ, ColorShift_Top และ ColorShift_Bottom จะใช้งาน กับ Lighting.Ambient และ Lighting.OutdoorAmbient โปรพี่ๆ ถ้าพวกเขาใหญ่กว่า 0, 0, 0
EnvironmentDiffuseScale
แสงสภาพแวดล้อมที่มาจากสภาพแวดล้อม มูลค่าของค่านี้เริ่มต้นที่ 0
มันคล้ายกับ Lighting.Ambient และ Lighting.OutdoorAmbient รายการ แต่มันเป็นไปได้และสามารถเปลี่ยนแปลงตามสภาพแวดล้อมและเวลาของวัน มันได้รับการแนะนำเมื่อเพิ่มรายก
นอกจากนี้ยังทำให้กล่องท้องฟ้าปรากฏในเวลากลางคืน
EnvironmentSpecularScale
แสงสะท้อนแสงที่มาจากสภาพแวดล้อม มีค่าเริ่มต้นของค่านี้คือ 0
มันจะทำให้วัตถุเงางามสะท้อนสภาพแวดล้อม สำคัญเป็นพิเศษเพื่อทำให้โลหะเป็นจริงมากขึ้น
ExposureCompensation
สมบัติสมุดนี้กำหนดจำนวนเงินการตรองแสงที่เป็นไปตามระดับแสงของฉากก่อนที่จะเป็นตัวแทนแผนที่ตัวเลือก ค่าเริ่มต้นคือ 0
- ค่า +1 แสดงถึงการเปิดเผยเป็นสองเท่า และค่า -1 แสดงถึงการเปิดเผยครึ่งหนึ่ง
- มีค่า 0 ซึ่งหมายความว่าไม่มีการชดเชยสามารถทำได้
- ระยะ: -5 ถึง 5
คุณสมบัตินี้จะถูกเรียกใช้ซ้ำและสามารถตั้งค่าได้จากสคริปต์หรือ Studio
local Lighting = game:GetService("Lighting")Lighting.ExposureCompensation = 5
คุณสามารถใช้ค่านี้เพื่อปรับจำนวนการเปิดเผยก่อนที่จะเข้าสู่ขั้นตอนการแสดงผลเพื่อแสดงรายละเอียดเพิ่มเติมในพื้นที่สว่างหรือมืด
เมื่อ Lighting.Technology ติดตั้งเป็น Legacy ไม่มีผลกระทบต่อสมบัติสมบัตินี้
local Lighting = game:GetService("Lighting")-- ExposureCompensation ไม่มีผล เพราะเทคโนโลยีของ Lighting เป็นมรดกLighting.Technology = Enum.Technology.LegacyLighting.ExposureCompensation = 5
FogColor
สมบัติของหมอกถูกซ่อนเมื่อ Lighting มีวัตถุ Atmosphere
ค่า Color3 ที่ให้ความสว่างของ Lighting หมอก
หมอกทำงานอย่างไร?
หมอกใน Roblox ปรากฏในเครื่องบินระนาบเพื่อทิศทาง Workspace.CurrentCamera มันจางหายไปที่ Lighting.FogStart ระหว่างที่มันไม่มองเห็นได้ไปยัง
ที่ระยะไกลมากกว่า Lighting.FogEnd สีจะถูกกำหนดโดยสมบูรณ์โดย FogColor อย่างไรก็ตามในระยะระหว่าง Lighting.FogStart และ Lighting.FogEnd จะมีส่วนร่วมในการผ
Roblox ใช้การแปลงเชิงเส้นระหว่าง Lighting.FogStart และ Lighting.FogEnd เพื่อให้สีของพิ
local Lighting = game:GetService("Lighting")-- fog will fade between 25 and 200 studsLighting.FogStart = 25Lighting.FogEnd = 200
หมายเหตุ, หมอกไม่มีส่วนที่ปิดกั้นช่องทางเดิน
FogEnd
สมบัติของหมอกถูกซ่อนเมื่อ Lighting มีวัตถุ Atmosphere
ความลึกจาก Workspace.CurrentCamera ในสตั๊ดที่จะมีหมอกที่เป็นอุปกรณ์ป้องกันฝุ่น
หมอกทำงานอย่างไร?
หมอกใน Roblox ปรากฏในเครื่องบินระนาบกับทิศทาง Workspace.CurrentCamera มันจางระหว่าง Lighting.FogStart สมบัติที่มองไม่เห็นไปยัง FogEnd สมบัติที
ที่ระยะไกลเกิน FogEnd สีจะถูกกำหนดโดยสมบูรณ์โดย Lighting.FogColor อย่างไรก็ตามในระยะที่อยู่ระหว่าง Lighting.FogStart และ FogEnd องศาที่ผสมผสานของสีขึ้นอยู่กับตำแหน่ง
Roblox ใช้การแปลงเชิงเส้นระหว่าง Lighting.FogStart และ FogEnd เพื่อให้สีของพิกเซลที่ 15 และ FogEnd เป็นสี 20 ที่ระยะห่าง 15
local Lighting = game:GetService("Lighting")-- fog will fade between 25 and 200 studsLighting.FogStart = 25Lighting.FogEnd = 200
สีของหมอกสามารถปรับแต่งได้โดยใช้ Lighting.FogColor
หมายเหตุ, หมอกไม่มีส่วนที่ปิดกั้นช่องทางเดิน
FogStart
สมบัติของหมอกถูกซ่อนเมื่อ Lighting มีวัตถุ Atmosphere
ความลึกจาก Workspace.CurrentCamera ในสตั๊ดที่เริ่มแสดงให้เห็นในหมอก
หมอกทำงานอย่างไร?
หมอกใน Roblox ปรากฏในเครื่องบินระนาบกับทิศทางการมองของ Workspace.CurrentCamera มันจางลงไปในระหว่าง FogStart โปรไฟน์ที่มันไม่มองเห็นไปยัง Class.Light
ที่ระยะไกลมากกว่า Lighting.FogEnd สีจะถูกกำหนดโดยสมบูรณ์โดย Lighting.FogColor อย่างไรก็ตาม ในระยะระหว่าง FogStart และ Lighting.FogEnd จะมีขนาดที่ผสมผสานของ
Roblox ใช้การแปลงเชิงเส้นระหว่าง FogStart และ Lighting.FogEnd เมื่อเป็นเช่นนี้หาก FogStart เป็น 10 และ Lighting.FogEnd จะเป็น 2
local Lighting = game:GetService("Lighting")-- fog will fade between 25 and 200 studsLighting.FogStart = 25Lighting.FogEnd = 200
สีของหมอกสามารถปรับแต่งได้โดยใช้ Lighting.FogColor
หมายเหตุ, หมอกไม่มีส่วนที่ปิดกั้นช่องทางเดิน
GeographicLatitude
ลองติจูดภูมิศาสตร์ของฉากซึ่งส่งผลต่อเวลาการสร้าง Class.Lighting บนตำแหน่งดวงอาทิตย์และดวงจันทร์
เมื่อคำนวณตำแหน่งของดวงอาทิตย์ บัญชี
การเปลี่ยนแปลง GeographicLatitude จะเปลี่ยนตำแหน่งของดวงอาทิตย์ทุกๆ Lighting.TimeOfDay ของ ผู้พัฒนาที่มองหาตำแหน่งดวงอาทิตย์หรือดวงจันทร์ควรใช้ Lighting:GetSunDirection()
ตัวอย่างโค้ด
local Lighting = game:GetService("Lighting")
local UNIT_Z = Vector3.new(0, 0, 1)
local EARTH_TILT = math.rad(23.5) -- The Earth's tilt in radians.
local HALF_SOLAR_YEAR = 182.6282 -- Half the length of an average solar year
local function getSunDirection()
local gameTime = Lighting:GetMinutesAfterMidnight()
local geoLatitude = Lighting.GeographicLatitude
local dayTime = gameTime / 1440
local sourceAngle = 2 * math.pi * dayTime
local sunPosition = Vector3.new(math.sin(sourceAngle), -math.cos(sourceAngle), 0)
local latRad = math.rad(geoLatitude)
local sunOffset = -EARTH_TILT * math.cos(math.pi * (dayTime - HALF_SOLAR_YEAR) / HALF_SOLAR_YEAR) - latRad
local sunRotation = CFrame.fromAxisAngle(UNIT_Z:Cross(sunPosition), sunOffset)
local sunDirection = sunRotation * sunPosition
return sunDirection
end
print(getSunDirection())
GlobalShadows
เปิด/ปิดการใช้งานแสงในเกมที่ขึ้นอยู่กับ voxel
GlobalShadows ทำอะไร?
เมื่อตั้งค่าเป็นจริง เงาจะเรนเดอร์ในพื้นที่ที่ครอบคลุมตามตำแหน่งของดวงอาทิตย์และดวงจันทร์ สีเฉดจุดเรียงตัวที่ใช้สำหรับพื้นที่เหล่านี้จะได้รับกา
เมื่อปิดใช้งานการเรียกเรือมืดจะไม่ถูกเรียกและไม่มีความแตกต่างระหว่างพื้นที่ภายในและภายนอก ในผลลัพธ์, คุณสมบัติ Lighting.Ambient จะกำหนดสีแสงและ Lighting.OutdoorAmbient จะ
เงาจะถูกคํานวณโดยระบบ voxel และแต่ละ voxel เงาจะอยู่ในระดับ 4x4x4 สตัด ซึ่งหมายความว่าวัตถุจะต้องใหญ่กว่า 4x4x4 สตัดเพื่อแสดงเงาที่เป็นจริง เงายังจะถูกระคํ
หมายเหตุ, คุณสมบัตินี้ไม่เกี่ยวข้องกับเงาจากตัวละครที่แสดงอยู่อย่างไรก็ตาม GlobalShadows ติดตั้งไว้
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจัดแสงที่มีประสิทธิภาพของ Roblox โปรดดูโพสต์บล็อกนี้ โปรดดูโพสต์บล็อกนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจัดแสงที่มีประสิทธิภาพของ Roblox For more information about Roblox's dynamic lighting, please see this โพสต์บล็อก .
เปิด/ปิด GlobalShadows
ผู้พัฒนาที่เปิด/ปิดการตั้งค่า GlobalShadows จะสังเกตเห็นว่าการปิดการใช้งานมันจะทำให้สถานที่มืดมากขึ้น เนื่องจากเมื่อ GlobalShadows ถู
รูปลักษณ์ดู การแนะนำการใช้งาน แสงสว่าง สมบัติ
Intent
OutdoorAmbient
สีแสงที่ใช้สำหรับพื้นที่ภายนอก
ค่านี้เริ่มต้นที่ 127, 127, 127
ตราบเท่าที่ช่องสีแดง สีเขียว และสีน้ำเงินของ Lighting.Ambient ไม่เกินช่
หมายเหตุ, เมื่อ Lighting.GlobalShadows ถูกปิดใช้งานจะไม่มีความแตกต่างระหว่างพื้นที่ที่คลุมอยู่จากท้องฟ้าและพื้นที่ที่ไม่ ในกรณีนี้ OutdoorAmbient จะได้รับการเพิกเฉยและส
สำหรับสีที่มีผลต่อสีของแสง โปรดดู Lighting.ColorShift_Bottom และ Lighting.ColorShift_Top
Quality
ShadowSoftness
ควบคุมว่าเงามืดมีความละเอียดแค่ไหน มูลค่าของสมบัติส่วนนี้เริ่มต้นที่ 0.2
คุณสมบัตินี้ทำงานได้เฉพาะเมื่อ Lighting.Technology โหมดเป็น ShadowMap หรือ Future และอุปกรณ์สามารถเปิดเผยแสงได้
Technology
กำหนดระบบจัดแสงสำหรับการเรนเดอร์โลก 3D ระบบนี้ไม่สกริปต์และเปลี่ยนแปลงได้เฉพาะใน Studio ดู Enum.Technology สำหรับตัวเลือกที่มีอยู่ และ Lighting Technology สำหรับคำอธิบายและเอฟเฟกต์วิดีโ
TimeOfDay
การแทนที่สตริง 24 ชั่วโมงของเวลาปัจจุบันที่ใช้โดย Lighting
หมายเหตุ, ค่านี้ไม่ตรงกับเวลาเดิมของวัน และจะไม่เปลี่ยนแปลงในระหว่างเกม ยกเว้นว่าจะถูกเปลี่ยนโดยสคริป
สำหรับการวัดจํานวนเลขของ Lighting เวลาใช้ Lighting.ClockTime การเปลี่ยนแปลง Lighting.ClockTime หรือการใช้ 1> Class.Lighting:SetMinutesAfterMidnight()1> จะเปลี่ยนแปลงสมบั
ใช้ TimeOfDay ต้องการเวลาที่ปกติและรูปแบบสตริง:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local seconds = minutesNormalised * 60local hours = string.format("%02.f", seconds//3600)local mins = string.format("%02.f", math.floor(seconds/60 - (hours*60)))local secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60))local timeString = hours..":"..mins..":"..secsLighting.TimeOfDay = timeStringtask.wait()end
การใช้ Lighting.ClockTime ต้องใช้เวลาในการปรับปรุง:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
การใช้ Lighting:SetMinutesAfterMidnight() ไม่ต้องใช้การประมวลผลเพิ่มเติม:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
วิธีการ
GetMinutesAfterMidnight
กลับจำนวนนาทีที่ผ่านมาหลังเที่ยงคืนเพื่อวัตถุประสงค์ในการจุดเปิดไฟ
ตัวเลขนี้จะเกือบเท่ากับ Lighting.ClockTime ที่คูณด้วย 60
ตัวเลขนี้จะไม่เท่ากับค่าที่ให้ใน Lighting:SetMinutesAfterMidnight() เนื่องจากมันกลับมาในตอนเช้าของวันปัจจุบัน
สำหรับ Lighting รูปแบบเวลาที่จัดเป็นสตริงดูเหมือนว่าจะเป็น Lighting.TimeOfDay
ส่งค่ากลับ
จำนวนนาทีหลังเที่ยงคืน
ตัวอย่างโค้ด
local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMinutesAfterMidnight())
GetMoonDirection
กลับมาเป็น Vector3 ที่แสดงทิศทางของดวงจันทร์จากตำแหน่ง 0, 0, 0
หมายเหตุ, เมื่อดวงจันทร์มี 'ตั้งค่า' และไม่มีอีกต่อไป, Vector3 ที่กลับโดยหน้าฟังค์ชันนี้จะยังคงชี้ไปที่ดวงจันทร์ด้านล่างแผนที่
ผู้พัฒนาที่ต้องการเปลี่ยนตำแหน่งของดวงจันทร์ควรใช้คุณสมบัติ Lighting.ClockTime หรือ Lighting.GeographicLatitude
มีตัวแปรของคุณสมบัตินี้เพื่อการได้รับทิศทางของดวงอาทิตย์, Lighting:GetSunDirection()
ส่งค่ากลับ
ตัวอย่างโค้ด
local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMoonDirection())
GetMoonPhase
กลับสถานะปัจจุบันของดวงจันทร์ ไม่มีวิธีในการเปลี่ยนแปลงสถานะของดวงจันทร์ดังนั้นจึงจะกลับมาที่ 0.75 เสมอ
ส่งค่ากลับ
GetSunDirection
กลับมาเป็น Vector3 ที่แสดงทิศทางของดวงอาทิตย์จากตำแหน่ง 0, 0, 0
หมายเหตุ, เมื่อดวงอาทิตย์ได้ตั้งและไม่มีอีกต่อไป, เวลา Vector3 ที่กลับโดยฟังก์ชันนี้จะยังคงชี้ไปที่ดวงอาทิตย์ด้านล่างแผนที่.
ผู้พัฒนาที่ต้องการเปลี่ยนตำแหน่งของดวงอาทิตย์ควรใช้คุณสมบัติ Lighting.ClockTime หรือ Lighting.GeographicLatitude
มีตัวแปรของคุณสมบัตินี้เพื่อการได้รับทิศทางของดวงจันทร์, Lighting:GetMoonDirection() .
ส่งค่ากลับ
ตัวอย่างโค้ด
local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
Lighting.GeographicLatitude = 41.73
print(Lighting:GetSunDirection())
SetMinutesAfterMidnight
ตั้งค่า Lighting.TimeOfDay และ Lighting.ClockTime ให้เป็นเวลานาทีหลังเที่ยงคืน
ฉันจะทำสคริปต์วัน / คืนได้อย่างไร?
ตั้งค่านาทีหลังเที่ยงคืน สามารถใช้ค่านับเลขได้เช่นในวัน/คืนวัฏจักร Script โดยไม่จำเป็นต้องแปลงเป็นสตริงในรูปแบบที่ต้องการโดย <
ใช้ Lighting.TimeOfDay ต้องใช้เวลาในการปรับปรุงและรูปแบบสตริง:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local seconds = minutesNormalised * 60local hours = string.format("%02.f", seconds // 3600)local mins = string.format("%02.f", math.floor(seconds / 60 - (hours * 60)))local secs = string.format("%02.f", math.floor(seconds - hours * 3600 - mins * 60))local timeString = hours .. ":" .. mins .. ":" .. secsLighting.TimeOfDay = timeStringtask.wait()end
การใช้ Lighting.ClockTime ต้องใช้เวลาในการปรับปรุง:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
การใช้ Lighting:SetMinutesAfterMidnight() ไม่ต้องใช้การประมวลผลเพิ่มเติม:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
พารามิเตอร์
จำนวนนาทีหลังเที่ยงคืน
ส่งค่ากลับ
ตัวอย่างโค้ด
local Lighting = game:GetService("Lighting")
Lighting:SetMinutesAfterMidnight(840)
อีเวนต์
LightingChanged
เหตุการณ์นี้เกิดขึ้นเมื่อสมบัติสมบัติ Lighting ถูกเปลี่ยนแปลงหรือสมบัติ Sky ถูกเพิ่มหรือลบออกจาก Lighting
แม้ว่าเหตุการณ์นี้จะเกิดขึ้นเมื่อส่วนใหญ่ของ Lighting เปลี่ยนแปลง ผู้พัฒนาควรระวังตัวจากข้อยกเว้นเหล่านี้:
- การเปลี่ยน Lighting.GlobalShadows จะไม่เรียกเหตุการณ์นี้
ในกรณีที่ไม่ต้องการพฤติกรรมนี้สามารถใช้งานได้โดยการใช้เหตุการณ์ Object.Changed หรือ Object:GetPropertyChangedSignal()
พารามิเตอร์
ตัวอย่างโค้ด
local Lighting = game:GetService("Lighting")
local function onLightingChanged(skyboxChanged)
if skyboxChanged then
print("Skybox has changed")
else
print("The skybox did not change.")
end
end
Lighting.LightingChanged:Connect(onLightingChanged)