Lighting
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Die Beleuchtungsdienstleistung kontrolliert die globale Beleuchtung in einem Erlebnis. Es umfasst eine Reihe von anpassbaren Eigenschaften, die Sie verwenden können, um zu ändern, wie die Beleuchtung aussieht und mit anderen Objekten interagiert, wie in Beleuchtungseigenschaften beschrieben.
Beleuchtung kann auch ein Atmosphere -Objekt enthalten, um realistische Atmosphäreneffekte zu rendern, einschließlich Partikeldichte, Nebel, Blenden und Farbe. Siehe Atmosphäreneffekte für Details.
Darüber hinaus kann Beleuchtung (zusammen mit Workspace.CurrentCamera ) post-Processing-Effekte enthalten, wie z. B. SunRaysEffect und 1> Class.BlurEffect1>. Siehe 4> Post-Processing-Effekte4> für weitere Informationen.
Code-Beispiele
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
Zusammenfassung
Eigenschaften
Die Beleuchtungsstufe, die auf Bereiche angewendet wird, die vom Himmel abgesperrt sind, wie Innenbereiche.
Die Intensität der Beleuchtung im Ort.
Eine nummerische Repräsentation (in Stunden) der aktuellen Tageszeit, die von Lighting verwendet wird.
Die Farbe, die in das Licht reflektierenden Oberflächen repräsentiert ist, gegenüber derjenigen, die der Sonne oder dem Mond gegenüberstehen.
Die Farbe, die in einem von der Sonne oder des Mondes gegenüberstehenden Material reflektiert wird.
Umgebungslicht, das aus der Umgebung stammt.
Spiegelndes Licht, das aus der Umgebung stammt.
Der Ausgleichswert.
Die Tiefe aus der Workspace.CurrentCamera, in Studs, bei der der Nebel vollständig undurchsichtig wird.
Die Tiefe aus der Workspace.CurrentCamera , in Studs, bei der der Nebel anfängt, zu anzeigen.
Die geographische Lage, in Grad, des Bildes, die das Ergebnis von "Class.Lighting" auf der Position der Sonne und des Mondes beeinflusst.
Schaltet die voxelbasierte dynamische Beleuchtung für das Spiel um.
Die Beleuchtungsstimmung, die für Außenbereiche angewendet wird.
Steuert, wie verschwommen die Schatten sind.
Bestimmt das Beleuchtungssystem für die Darstellung der 3D-Welt. Nicht skriptbar.
Eine 24-Stunden-Zeitvertretung der aktuellen Tageszeit, die von Lighting verwendet wird.
Methoden
Zurückgibt die Anzahl der Minuten, die nach Mitternacht für die Zwecke der Beleuchtung abgelaufen sind.
Kehrt eine Vector3 zurück, die die Richtung des Mondes aus der Position 0, 0, 0 repräsentiert.
Rückgibt die aktuelle Phase des Mondes.
Kehrt eine Vector3 zurück, die die Richtung der Sonne aus der Position 0, 0, 0 repräsentiert.
Setzt Lighting.TimeOfDay und Lighting.ClockTime auf die angegebene Anzahl von Minuten nach Mitternacht.
Ereignisse
Eigenschaften
Ambient
Die Beleuchtungsstufe, die auf Bereiche angewendet wird, die vom Himmel abgesperrt sind, wie Innenbereiche.
Dieses Eigenschaften-Standard ist 0, 0, 0 (Schwarz).
Solange die roten, grünen und blauen Kanäle dieser Eigenschaft nicht die entsprechenden Kanäle in Lighting.OutdoorAmbient überschreiten, wird der Effekt der Helligkeit für Bereiche, die von der Sonne/Mond abgehalten sind, reserviert. Die effekt
Beachten Sie, dass, wenn Lighting.GlobalShadows deaktiviert ist, keine Unterschiede zwischen abgedeckten und nicht abgedeckten Bereichen bestehen. In diesem Fall wird Lighting.OutdoorAmbient ignoriert und die Farbe aus der Umgebungseigenschaft angewendet, und die Helligkeit aus der Eigenschaft Umgebung wird überall ignoriert.
Für weitere Eigenschaften, die die Farbe der Beleuchtung beeinflussen, siehe Lighting.ColorShiftBottom und Lighting.ColorShiftTop.
Brightness
Die Intensität der Beleuchtung im Ort.
Durch Ändern dieses Werte wird die Wirkung der Lichtquelle (Sonne oder Mond) auf die Beleuchtung der Karte beeinflusst. Wenn die Helligkeit auf 0 eingestellt ist, wird kein Effekt durch Lighting.ColorShift_Top oder Lighting.ColorShift_Bottom als Lichtquelle geändert. Beachten Sie, dass dies
Während dieses Eigenschaft nicht geklemmt ist, wird der Effekt zwischen 0 und 2 geklemmt. Das bedeutet, dass die Helligkeit auf 10 zu setzen das Gleiche ist wie das Setzen auf 2.
Beachten Sie, Lighting.Ambient und Lighting.OutdoorAmbient können auch verwendet werden, um die Helligkeit eines Ortes zu beeinflussen. Zum Beispiel, indem Sie Lighting.OutdoorAmbient auf 255, 255, 255 einstellen, wird
ClockTime
Eine nummerische Repräsentation (in Stunden) der aktuellen Tageszeit, die von Lighting verwendet wird.
Beachten Sie, dass diese Eigenschaft nicht mit der tatsächlichen Tageszeit übereinstimmt und während des Spiels nicht geändert wird, es sei denn, es wurde von einem Skript, das. PL: die Skriptsgeändert.
Für eine Messung von Lighting Zeit in 24-Stunden-Strich verwenden Lighting.CurrentTime. Ändern Sie Lighting.CurrentTime oder verwenden Sie 1> Class.Lighting:SetMinutesAfterMidnight()1>, um diese Eigenschaftenzu ändern.
Um ClockTime verwenden zu können, muss die Zeit normalisiert sein:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
Die Verwendung von Lighting.TimeOfDay erfordert die Zeit, um normalisiert zu werden, und eine Strings-Formate:
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
Das Verwenden von Lighting:SetMinutesAfterMidnight() benötigt keine zusätzliche Verarbeitung:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
ColorShift_Bottom
Die Farbe, die in das Licht reflektierenden Oberflächen repräsentiert ist, gegenüber derjenigen, die der Sonne oder dem Mond gegenüberstehen.
Die Oberflächen eines BasePart von ColorShift_Bottom basieren auf der Position und Ausrichtung des BasePart in Bezug auf die Sonne oder den Mond. Wenn die Sonne direkt über dem BasePart steht, gilt der Farbversatz nur für die untere Oberfläche.
Dieser Effekt kann erhöht oder verringert werden, indem Lighting.Brightness geändert wird.
ColorShift_Bottom beeinflusst die entgegengesetzten Oberflächen zu Lighting.ColorShift_Top
Beachten Sie, Lighting.ColorShift_Top und ColorShift_Bottom mit den Lighting.Ambient und Lighting.OutdoorAmbient-Eigenschaften interagieren, wenn sie größer als 0, 0, 0 sind. Darüber hinaus kann die Wirkung von ColorShift_Bottom sehr
ColorShift_Top
Die Farbe, die in einem von der Sonne oder des Mondes gegenüberstehenden Material reflektiert wird.
Die Oberflächen eines BasePart von ColorShift_Top basieren auf der Position und Ausrichtung des BasePart in Bezug auf die Sonne oder den Mond. Wenn die Sonne direkt über dem BasePart steht, gilt der Farbversatz nur für die oberste Oberfläche.
Dieser Effekt kann erhöht oder verringert werden, indem Lighting.Brightness geändert wird.
Während ColorShift_Top die Oberflächen, die der Licht exponierten, beeinflusst, beeinflusst Lighting.ColorShift_Bottom die Oberflächen, die vor dem Licht geschützt sind.
Beachten Sie, dass ColorShift_Top und ColorShift_Bottom mit den Lighting.Ambient und Lighting.OutdoorAmbient-Eigenschaften interagieren, wenn sie größer als 0, 0, 0 sind.
EnvironmentDiffuseScale
Umgebungslicht, das aus der Umgebung stammt. Der Wert dieser Eigenschaft wird standardmäßig auf 0 gesetzt.
Es ist ähnlich zu Lighting.Ambient und Lighting.OutdoorAmbient-Eigenschaft, aber es ist dynamisch und kann nach Himmel und Tageszeit ändern. Es wird empfohlen, wenn diese Eigenschaft erhöht wird, Ambient und OutdoorAmbient entsprechend verringert.
Es macht auch den Himmelskasten in der Nacht sichtbar.
EnvironmentSpecularScale
Spiegelndes Licht, das aus der Umgebung stammt. Der Wert dieser Eigenschaft wird standardmäßig auf 0 gesetzt.
Es wird dafür sorgen, dass glatte Objekte die Umgebung widerspiegeln. Besonders wichtig, um Metall realistischer zu machen.
ExposureCompensation
Diese Eigenschaft bestimmt die Ausgleichssumme, die einen Bias auf die Ausgabe-Ebene der Szene vor dem Tonemap-Schritt anwendet. Standard sind 0.
- Ein Wert von +1 zeigt doppelt so viel Exposure und -1 bedeutet halb so viel Exposure.
- Ein Wert von 0 zeigt an, dass keine Expositionskompensation erfolgt.
- Reichweite: -5 bis 5
Diese Eigenschaft wird replicated und kann von Skripten oder Studio festgelegt werden.
local Lighting = game:GetService("Lighting")Lighting.ExposureCompensation = 5
Sie können diese Eigenschaft verwenden, um die Expositionsmenge vor dem Tonemap-Schritt anzupassen, um mehr Details in helleren oder dunkleren Bereichen anzuzeigen. Dies ist erforderlich, da wir zu einer HDR-Pfeife wechseln.
Wenn Lighting.Technology auf Legacy eingestellt ist, hat diese Eigenschaft keinen Effekt.
local Lighting = game:GetService("Lighting")-- ExposureCompensation hat keinen Effekt, da die Technologie von Lighting Legacy istLighting.Technology = Enum.Technology.LegacyLighting.ExposureCompensation = 5
FogColor
Fog-Eigenschaften werden ausgeblendet, wenn Lighting ein Atmosphere-Objekt enthält.
Ein Color3-Wert, der die Farbe des Lighting-Nebels gibt.
Wie funktioniert Nebel?
Fog in Roblox wird in einem Flugzeug perpendikular zur Workspace.CurrentCamera -Richtung angezeigt. Es verblasst zwischen dem Lighting.FogStart -Eigenschaft, in der es nicht sichtbar ist, bis zur Lighting.FogEnd -Eigenschaft, in der es vollständig opake ist. Der Effekt von Fog ist es, seine Farbe mit der F
Bei Entfernungen größer als Lighting.FogEnd , wird die Farbe vollständig durch die FogColor bestimmt. jedoch bei Entfernungen zwischen Lighting.FogStart und Lighting.FogEnd der Grad, in dem die Farbe gemischt wird, hängt von der Position ab.
Roblox verwendet lineare Interpolation zwischen Lighting.FogStart und Lighting.FogEnd. Dies bedeutet, wenn Lighting.FogStart 10 und 1> Class.Lighting.F
local Lighting = game:GetService("Lighting")-- fog will fade between 25 and 200 studsLighting.FogStart = 25Lighting.FogEnd = 200
Beachten Sie, dass Nebel die Skybox nicht verdunkelt.
FogEnd
Fog-Eigenschaften werden ausgeblendet, wenn Lighting ein Atmosphere-Objekt enthält.
Die Tiefe aus der Workspace.CurrentCamera, in Studs, bei der der Nebel vollständig undurchsichtig wird.
Wie funktioniert Nebel?
Fog in Roblox wird in einem Flugzeug perpendikular zur Workspace.CurrentCamera -Ansicht angezeigt. Es verblasst zwischen dem Lighting.FogStart -Eigenschaft, in der es nicht sichtbar ist, bis zur FogEnd-Eigenschaft, in der es vollständig opake ist. Der Effekt des Fog ist, dass er die Farbe mit der Class.Lighting.FogColor
Farbe wird bei Distanzen größer als FogEnd vollständig durch die Lighting.FogColor bestimmt. jedoch bei Distanzen zwischen Lighting.FogStart und FogEnd, der Grad, in dem die Farbe gemischt wird, hängt von der Position ab.
Roblox verwendet lineare Interpolation zwischen Lighting.FogStart und FogEnd. Dies bedeutet, wenn Lighting.FogStart 10 und FogEnd sind, dass der Fog bei einer Entfernung von 15 Studs 50% ist. Dies bedeutet, dass die Farbe eines Pixels bei 15 Studs 50% ist, mit
local Lighting = game:GetService("Lighting")-- fog will fade between 25 and 200 studsLighting.FogStart = 25Lighting.FogEnd = 200
Die Farbe des Nebels kann mit Lighting.FogColor angepasst werden.
Beachten Sie, dass Nebel die Skybox nicht verdunkelt.
FogStart
Fog-Eigenschaften werden ausgeblendet, wenn Lighting ein Atmosphere-Objekt enthält.
Die Tiefe aus der Workspace.CurrentCamera , in Studs, bei der der Nebel anfängt, zu anzeigen.
Wie funktioniert Nebel?
Fog in Roblox wird in einem Flugzeug perpendikular zur Workspace.CurrentCamera -Ansicht angezeigt. Es verblasst zwischen der FogStart-Eigenschaft, in der es nicht sichtbar ist, bis zur Lighting.FogEnd -Eigenschaft, in der es vollständig opake ist. Der Effekt des Fog ist, dass er die Farbe mit der Class.Lighting.FogColor
Bei Entfernungen größer als Lighting.FogEnd wird die Farbe vollständig durch die Lighting.FogColor bestimmt. jedoch bei Entfernungen zwischen FogStart und Lighting.FogEnd der Grad, in dem die Farbe gemischt wird, hängt von der Position ab.
Roblox verwendet lineare Interpolation zwischen FogStart und Lighting.FogEnd . Dies bedeutet, dass, wenn FogStart 10 ist und Lighting.FogEnd 20 ist, auf einer Entfernung von 15 Studs der Fog auf 50% ist. Dies bedeutet, dass die Farbe eines Pixels bei 15 Studs 50
local Lighting = game:GetService("Lighting")-- fog will fade between 25 and 200 studsLighting.FogStart = 25Lighting.FogEnd = 200
Die Farbe des Nebels kann mit Lighting.FogColor angepasst werden.
Beachten Sie, dass Nebel die Skybox nicht verdunkelt.
GeographicLatitude
Die geographische Lage, in Grad, des Bildes, die das Ergebnis von "Class.Lighting" auf der Position der Sonne und des Mondes beeinflusst.
Wenn die Position der Sonne berechnet wird, wird auch der Neigung der Erde Konto.
Die Änderung der GeografischenLatitude wird die Position der Sonne zu jedem Lighting.TimeOfDay ändern. Entwickler, die die Position der Sonne oder des Mondes erhalten möchten, sollten Lighting:GetSunDirection() oder Class.Lighting:GetMoonDirection() verwenden.
Code-Beispiele
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
Schaltet die voxelbasierte dynamische Beleuchtung im Spiel um
Was macht GlobalShadows?
Wenn auf wahr gesetzt, werden Schatten in geschützten Bereichen rend染 in Abhängigkeit von der Position der Sonne und des Mondes. Die Beleuchtungsfarbe, die auf diese Bereiche angewendet wird, wird durch die Eigenschaft Lighting.Ambient bestimmt. Die Beleuchtungsfarbe in allen anderen Bereichen wird durch die Eigenschaft Lighting.OutdoorAmbient bestimmt.
Wenn deaktiviert, werden keine Schatten gezogen und keine Unterscheidung zwischen Innen- und Außenbereichen getroffen. Ergebnisbestimmt die Eigenschaft Lighting.Ambient die Beleuchtungsfarbe und Lighting.OutdoorAmbient wird nichts tun.
Schatten werden mit einem Voxel-System berechnet, und jedes Beleuchtungs-Voxel ist 4x4x4 Studs. Dies bedeutet, dass Objekte größer sein müssen als 4x4x4 Studs, um eine realistische Schattenanzeige zu verwalten. Schatten werden auch recalculated, wenn BaseParts sich bewegen.
Beachten Sie, dass diese Eigenschaft nicht mit Schatten von Charaktern verwandt ist, die unabhängig davon global verwendet werden.
For more information about Roblox's dynamic lighting, please see this Blog-Post .
GlobalShadows umschalten
Entwickler, die die GlobalShadows-Einstellung umstellen, bemerken, dass das Deaktivieren sie den Ort deutlich dunkler macht. Dies ist, weil wenn GlobalShadows deaktiviert ist Lighting.Ambient wird verwendet, um die Beleuchtungsfarbe in beiden Innen- und Außenbereichen zu berechnen. Dieses Dunkelheit kann durch das Festlegen von
In den meisten Fällen empfehlen sich Entwickler, GlobalShadows aufgrund des visuellen Aussehenzu deaktivieren. Siehe Leitfaden für Beleuchtungseigenschaften für eine Vergleich.
Intent
OutdoorAmbient
Die Beleuchtungsstimmung, die für Außenbereiche angewendet wird.
Diese Eigenschaft wird standardmäßig auf 127, 127, 127 gesetzt.
Solange die roten, grünen und blauen Kanäle von Lighting.Ambient nicht die entsprechenden Kanäle in dieser Eigenschaftenüberschreiten, wird die Helligkeit der Beleuchtung in Außen
Beachten Sie, wenn Lighting.GlobalShadows deaktiviert ist, gibt es keine Unterscheidung zwischen Bereichen, die vom Himmel verкрыt sind, und Bereichen, die nicht sind. In diesem Fall wird OutdoorAmbient ignoriert und die Farbe aus der Eigenschaft Lighting.Ambient wird überall angewendet.
Für weitere Eigenschaften, die die Farbe der Beleuchtung beeinflussen, siehe Lighting.ColorShift_Bottom und Lighting.ColorShift_Top.
Quality
ShadowSoftness
Steuert, wie verschwommen die Schatten sind. Der Wert dieser Eigenschaft wird standardmäßig auf 0,2 gesetzt.
Diese Eigenschaft funktioniert nur, wenn Lighting.Technology-Modus ist ShadowMap oder Future und das Gerät in der Lage ist, ShadowMap zu unterstützen.
Technology
Bestimmt das Beleuchtungssystem für die Rendering der 3D-Welt. Nicht skriptbar und nur in Studio modifizierbar. Siehe Enum.Technology für verfügbare Optionen und Lighting Technology für detaillierte Beschreibungen und visuelle Effekte jeder Option.
TimeOfDay
Eine 24-Stunden-Zeitvertretung der aktuellen Tageszeit, die von Lighting verwendet wird.
Beachten Sie, dass diese Eigenschaft nicht mit der tatsächlichen Tageszeit übereinstimmt und während des Spiels nicht geändert wird, es sei denn, es wurde von einem Skript, das. PL: die Skriptsgeändert.
Für eine nummerische Messung von Lighting Zeitverbrauch Lighting.ClockTime . Ändern Lighting.ClockTime oder die Verwendung von 1> Class.Lighting:SetMinutesAfterMidnight()1> wird auch diese Eigenschaftengeändert.
Die Verwendung von TimeOfDay erfordert die Zeit, um normalisiert zu werden, und eine Strings-Formate:
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
Die Verwendung von Lighting.ClockTime erfordert die Zeit, um normalisiert zu werden:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
Das Verwenden von Lighting:SetMinutesAfterMidnight() benötigt keine zusätzliche Verarbeitung:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
Methoden
GetMinutesAfterMidnight
Zurückgibt die Anzahl der Minuten, die nach Mitternacht für die Zwecke der Beleuchtung abgelaufen sind.
Diese Zahl wird fast identisch mit Lighting.ClockTime multipliziert, um 60.
Diese Zahl wird nicht immer der in Lighting:SetMinutesAfterMidnight() gegebenen Wert entsprechen, da sie Minuten nach Mitternacht am aktuellen Tag zurückgibt.
Für Lighting Zeitformate als Strings, siehe Lighting.TimeOfDay.
Rückgaben
Die Anzahl der Minuten nach Mitternacht.
Code-Beispiele
local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMinutesAfterMidnight())
GetMoonDirection
Kehrt eine Vector3 zurück, die die Richtung des Mondes aus der Position 0, 0, 0 repräsentiert.
Beachten Sie, dass, wenn der Mond "festlegen" ist und nicht mehr sichtbar ist, die von dieser Funktion zurückgegebene Vector3 weiterhin auf den Mond unter der Karte zeigt.
Entwickler, die die Positionierung des Mondes ändern möchten, sollten die Lighting.ClockTime oder Lighting.GeographicLatitude Eigenschaften verwenden.
Eine Variante dieser Funktion existiert, um die Richtung der Sonne zu erhalten, Lighting:GetSunDirection() .
Rückgaben
Code-Beispiele
local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMoonDirection())
GetMoonPhase
Kehre die aktuelle Phase des Mondes zurück. Es gibt keine Möglichkeit, die Mondphase zu ändern, so dass dies immer 0,75 zurückgibt.
Rückgaben
GetSunDirection
Kehrt eine Vector3 zurück, die die Richtung der Sonne aus der Position 0, 0, 0 repräsentiert.
Beachten Sie, wenn die Sonne gesetzt ist und nicht mehr sichtbar ist, wird die Vector3 , die von dieser Funktion zurückgegeben wird, weiterhin auf die Sonne unter der Karte zeigen.
Entwickler, die die Positionierung der Sonne ändern möchten, sollten die Lighting.ClockTime oder Lighting.GeographicLatitude Eigenschaften verwenden.
Eine Variante dieser Funktion existiert, um die Richtung des Mondes zu erhalten, Lighting:GetMoonDirection() .
Rückgaben
Code-Beispiele
local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
Lighting.GeographicLatitude = 41.73
print(Lighting:GetSunDirection())
SetMinutesAfterMidnight
Setzt Lighting.TimeOfDay und Lighting.ClockTime auf die angegebene Anzahl von Minuten nach Mitternacht.
Wie kann ich ein Skript, das. PL: die Skriptserstellen?
SetMinutesAfterMidnight ermöglicht es, eine Zahl nach Mitternacht zu verwenden, z. B. in einem Tag/Nacht-Zyklus Script, ohne die Notwendigkeit, in eine Zeichenfolge im Format Lighting.TimeOfDay umzuwandeln. Es ermöglicht auch Werte größer als 24 Stunden, die entsprechen zu Zeiten am nächsten Tag. Siehe die Codeschnippen unten für ein Be
Die Verwendung von Lighting.TimeOfDay erfordert die Zeit, um normalisiert zu werden, und eine Strings-Formate:
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
Die Verwendung von Lighting.ClockTime erfordert die Zeit, um normalisiert zu werden:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
Das Verwenden von Lighting:SetMinutesAfterMidnight() benötigt keine zusätzliche Verarbeitung:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
Parameter
Die Anzahl der Minuten nach Mitternacht.
Rückgaben
Code-Beispiele
local Lighting = game:GetService("Lighting")
Lighting:SetMinutesAfterMidnight(840)
Ereignisse
LightingChanged
Dieses Ereignis wird ausgelöst, wenn eine Lighting-Eigenschaft geändert wird oder ein Sky von Lighting entfernt oder hinzugefügt wird.
Obwohl dieses Ereignis ausgelöst wird, wenn die meisten Eigenschaften von Lighting geändert werden, sollten Entwickler sich der wenigen Ausnahmen bewusst sein:
- Ändern Sie Lighting.GlobalShadows , wird dieses Ereignis nicht auslösen
- Die Nebel-Eigenschaften, Lighting.FogColor , Lighting.FogStart und Lighting.FogEnd , werden dieses Ereignis nicht auslösen
In Fällen, in denen dieses Verhalten nicht gewünscht ist, kann das Ereignis Object.Changed oder die Funktion Object:GetPropertyChangedSignal() verwendet werden.
Parameter
Code-Beispiele
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)