하늘 상자(skybox)는 게임에서 몰입감 있는 하늘 배경을 만들기 위해 여섯 개의 개별 이미지로 이루어진 큐브입니다. 이미지를 서로 완벽하게 정렬되도록 디자인하면 하늘 상자는 큐브 안에 있는 느낌 없이 파노라마처럼 보입니다. 이렇게 하면 게임이 실제보다 더 크게 느껴지고, 깊이를 추가하여 깊은 우주나 수중 환경을 시뮬레이션하는 등의 분위기를 더할 수 있습니다.
추가적으로, Sky 객체에는 태양, 달, 별과 같은 천체가 포함되어 있으며, 이들은 TimeOfDay 또는 ClockTime에 따라 동적으로 나타나고, 떠오르며, 지도록 설정됩니다.
마지막으로, Sky 객체는 ViewportFrames에서 반사를 위한 큐브 맵(cubemap)으로 사용할 수 있습니다. 자세한 내용은 뷰포트 프레임을 참조하십시오.
하늘 상자 구성
자신만의 하늘 상자 이미지를 만든 경우, 우선 가져오기를 통해 Roblox에 이미지를 가져와야 하늘 상자에서 사용할 수 있습니다. 각 이미지는 큐브에 "접었을" 때 이웃 이미지의 모든 가장자리에서 원활하게 연결되어야 합니다.

하늘 상자를 만들려면:
새로운 Sky 객체를 선택한 후, 속성 창에서 다음 하늘 속성 각각에 텍스처를 할당합니다:
- SkyboxBk — 하늘 상자의 뒤 면.
- SkyboxDn — 하늘 상자의 아래 면.
- SkyboxFt — 하늘 상자의 앞 면.
- SkyboxLf — 하늘 상자의 왼쪽 면.
- SkyboxRt — 하늘 상자의 오른쪽 면.
- SkyboxUp — 하늘 상자의 위 면.

천체
기본적으로 Sky 객체에는 태양, 달, 별과 같은 천체가 포함되어 있습니다. 이들 천체는 TimeOfDay 또는 ClockTime 속성 값에 따라 동적으로 나타나고, 떠오르며, 지도록 설정됩니다.
다음 속성을 통해 천체를 사용자 지정할 수 있습니다:
- SunTextureId — 태양의 텍스처를 설정합니다.
- SunAngularSize — 태양의 상대적인 크기를 도 단위로 설정합니다.
- MoonTextureId — 달의 텍스처를 설정합니다.
- MoonAngularSize — 달의 상대적인 크기를 도 단위로 설정합니다.
- StarCount — 하늘 상자에서 별의 수를 설정합니다.
방향
SkyboxOrientation 속성은 하늘 상자 면의 방향을 변경합니다. 이 속성은 일반적인 XYZ 순서의 도 단위 값으로 이루어진 Vector3를 사용하며, 회전은 Y 축 주위를 먼저 적용한 후, X, 그리고 마지막으로 Z 축을 사용하여 복잡한 움직임에 대한 예측 가능성을 제공합니다.
방향 애니메이션을 스크립트로 쉽게 만드는 방법은 Y 축 주위를 회전시키고, 이후 X 및 Z에 고정 값을 설정하여 이 축을 기울이는 것입니다. 예를 들어, 아래 스크립트는 Y 축을 회전시키면서 X 축에 일정한 30도 기울기를 유지합니다.
local Lighting = game:GetService("Lighting")
local RunService = game:GetService("RunService")
local sky = Lighting:FindFirstChild("Sky")
local ROTATION_SPEED = 5 -- 초당 도
RunService.Heartbeat:Connect(function(deltaTime)
sky.SkyboxOrientation = Vector3.new(
30,
(sky.SkyboxOrientation.Y + ROTATION_SPEED * deltaTime) % 360,
0
)
end)
하늘 상자 방향은 비용이 낮은 기능으로, 모든 플랫폼과 시각적 품질 수준에서 원활하게 작동합니다. 따라서 의도된 몇 가지 예외가 포함됩니다:
- 하늘이 열린 창을 통해 거울 표면에서의 실내 반사에서 보이는 경우, 그 특정 반사된 전망은 회전하지 않습니다. 이를 달성하려면 비용이 많이 드는 큐브 맵의 재렌더링과 컨볼루션을 수행해야 하며, 이는 성능과 널리 사용 가능성에 중대한 영향을 미칩니다.
- 하늘 상자 면만 회전합니다; 천체는 이 속성의 영향을 받지 않습니다.
