Eine Himmelbox ist ein Würfel, der aus sechs einzelnen Bildern besteht und einen eindrucksvollen Himmelshintergrund in einem Spiel erstellt. Wenn die Bilder so gestaltet sind, dass sie perfekt aufeinander abgestimmt sind, erscheint die Himmelbox panoramisch, ohne den Eindruck zu erwecken, sich in einem Würfel zu befinden. Dies lässt Spiele größer erscheinen, als sie tatsächlich sind, und fügt Ihrer Atmosphäre Tiefe hinzu, indem es beispielsweise tiefen Raum oder Unterwasserumgebungen simuliert.
Darüber hinaus umfasst das Objekt Sky Himmelskörper wie Sonne, Mond und Sterne, die dynamisch erscheinen, aufsteigen und untergehen, basierend auf der TimeOfDay oder ClockTime.
Schließlich kann das Objekt Sky als Cubemap für Reflexionen in ViewportFrames verwendet werden. Weitere Einzelheiten finden Sie in den Viewport-Frames.
Konstruktion der Himmelbox
Wenn Sie Ihre eigenen Himmelbox-Bilder erstellt haben, müssen Sie diese zuerst importieren, bevor Sie sie in einer Himmelbox verwenden können. Jedes Bild muss entlang aller Kanten der benachbarten Bilder nahtlos sein, wenn es "gefaltet" in einen Würfel integriert wird.

Um eine Himmelbox zu erstellen:
Wählen Sie das neue Sky-Objekt aus und weisen Sie im Eigenschaften-Fenster jeder der folgenden Himmel-Eigenschaften eine Textur zu:
- SkyboxBk — Der hintere Quadrat der Himmelbox.
- SkyboxDn — Der untere Quadrat der Himmelbox.
- SkyboxFt — Der vordere Quadrat der Himmelbox.
- SkyboxLf — Der linke Quadrat der Himmelbox.
- SkyboxRt — Der rechte Quadrat der Himmelbox.
- SkyboxUp — Der obere Quadrat der Himmelbox.

Himmelskörper
Standardmäßig umfasst das Objekt Sky Himmelskörper wie Sonne, Mond und Sterne. Diese Körper erscheinen dynamisch, steigen auf und gehen unter, basierend auf den Werten der Eigenschaften TimeOfDay oder ClockTime.
Sie können Himmelskörper durch die folgenden Eigenschaften anpassen:
- SunTextureId — Legt die Textur der Sonne fest.
- SunAngularSize — Legt die relative Größe der Sonne in Grad fest.
- MoonTextureId — Legt die Textur des Mondes fest.
- MoonAngularSize — Legt die relative Größe des Mondes in Grad fest.
- StarCount — Legt die Anzahl der Sterne in der Himmelbox fest.
Ausrichtung
Die Eigenschaft SkyboxOrientation ändert die Ausrichtung der Himmelboxflächen. Die Eigenschaft akzeptiert einen Vector3 von Gradwerten in der typischen XYZ-Reihenfolge, aber die Rotation wird zuerst um die Y-Achse angewendet, dann um X und dann um Z, um eine vorhersehbare Kontrolle über komplexe Bewegungen zu ermöglichen.
Eine einfache Möglichkeit, eine Orientierungsanimation zu skripten, besteht darin, sich um die Y-Achse zu drehen (wobei der Horizont auf gleicher Höhe bleibt) und dann diese Achse zu neigen, indem Sie X und Z auf einen festen Wert setzen. Das folgende Skript animiert beispielsweise die Y-Achse für das Drehen, während es eine konstante Neigung von 30° auf der X-Achse beibehält.
local Lighting = game:GetService("Lighting")
local RunService = game:GetService("RunService")
local sky = Lighting:FindFirstChild("Sky")
local ROTATION_SPEED = 5 -- In Grad pro Sekunde
RunService.Heartbeat:Connect(function(deltaTime)
sky.SkyboxOrientation = Vector3.new(
30,
(sky.SkyboxOrientation.Y + ROTATION_SPEED * deltaTime) % 360,
0
)
end)
Beachten Sie, dass die Ausrichtung der Himmelbox eine kostengünstige Funktion ist, die nahtlos auf allen Plattformen und visuellen Qualitätsstufen funktioniert. Aus diesem Grund gibt es einige absichtliche Ausnahmen:
- Wenn der Himmel in Innenreflexionen wie einer Spiegeloberfläche durch ein offenes Fenster sichtbar ist, wird diese spezifische reflektierte Ansicht nicht rotiert. Dies zu erreichen würde teure Neurendering und Faltung von Cubemaps erfordern, was die Leistung und die breite Verfügbarkeit erheblich beeinträchtigen würde.
- Nur die Flächen der Himmelbox rotieren; Himmelskörper sind von dieser Eigenschaft nicht betroffen.
- Wenn Sie eine Sky innerhalb eines ViewportFrame verwenden, spiegelt sie die globalen Werte der SkyboxOrientation wider. Sie können den Winkel pro ViewportFrame nicht anpassen.
- Die dynamischen Wolken unter Terrain sind nicht betroffen.
