Um céu é um cubo composto por seis imagens individuais que criam um fundo de céu imersivo em um jogo. Quando as imagens são projetadas para se alinhar perfeitamente umas com as outras, o céu parece ser panorâmico, sem a impressão de estar dentro de um cubo. Isso faz com que os jogos pareçam maiores do que realmente são e adiciona profundidade à sua atmosfera, como simular o espaço profundo ou ambientes subaquáticos.
Além disso, o objeto Sky inclui corpos celestes como sol, lua e estrelas que aparecem, nascem e se põem dinamicamente com base no TimeOfDay ou ClockTime.
Finalmente, o objeto Sky pode ser usado como um cubemap para reflexões em ViewportFrames. Para detalhes, veja frames de visualização.
Construção do céu
Se você criou suas próprias imagens de céu, primeiro deve importá-las para o Roblox antes de poder usá-las em um céu. Cada imagem deve ser contínua ao longo de todas as bordas das imagens vizinhas quando "dobradas" em um cubo.

Para criar um céu:
Selecione o novo objeto Sky, então na janela Properties, atribua uma textura a cada uma das seguintes propriedades do céu:
- SkyboxBk — O quadrado traseiro do céu.
- SkyboxDn — O quadrado inferior do céu.
- SkyboxFt — O quadrado frontal do céu.
- SkyboxLf — O quadrado esquerdo do céu.
- SkyboxRt — O quadrado direito do céu.
- SkyboxUp — O quadrado superior do céu.

Corpos celestes
Por padrão, o objeto Sky inclui corpos celestes como sol, lua e estrelas. Esses corpos aparecem, nascem e se põem dinamicamente com base nos valores das propriedades TimeOfDay ou ClockTime.
Você pode personalizar os corpos celestes através das seguintes propriedades:
- SunTextureId — Define a textura do sol.
- SunAngularSize — Define o tamanho relativo do sol em graus.
- MoonTextureId — Define a textura da lua.
- MoonAngularSize — Define o tamanho relativo da lua em graus.
- StarCount — Define a quantidade de estrelas no céu.
Orientação
A propriedade SkyboxOrientation muda a orientação das superfícies do céu. A propriedade recebe um Vector3 de valores em graus na ordem típica XYZ, mas a rotação é aplicada primeiro ao redor do eixo Y, depois X, e então Z para permitir um controle previsível sobre movimentos complexos.
Uma maneira fácil de programar uma animação de orientação é girar em torno do eixo Y (mantendo o horizonte nivelado), então inclinar este eixo definindo X e Z para um valor fixo. O seguinte script, por exemplo, anima o eixo Y para girar enquanto mantém uma inclinação consistente de 30° no eixo X.
local Lighting = game:GetService("Lighting")
local RunService = game:GetService("RunService")
local sky = Lighting:FindFirstChild("Sky")
local ROTATION_SPEED = 5 -- Em graus por segundo
RunService.Heartbeat:Connect(function(deltaTime)
sky.SkyboxOrientation = Vector3.new(
30,
(sky.SkyboxOrientation.Y + ROTATION_SPEED * deltaTime) % 360,
0
)
end)
Observe que a orientação do céu é um recurso de baixo custo que funciona perfeitamente em todas as plataformas e níveis de qualidade visual. Como resultado, algumas exceções intencionais incluem:
- Se o céu estiver visível em reflexões internas, como uma superfície de espelho através de uma janela aberta, essa vista refletida específica não será rotacionada. Conseguir isso exigiria uma re-renderização cara e convolução de cubemaps, o que impactaria significativamente o desempenho e a ampla disponibilidade.
- Somente as superfícies do céu giram; corpos celestes não são afetados por essa propriedade.
- Se você utilizar um Sky dentro de um ViewportFrame, ele refletirá os valores globais de SkyboxOrientation. Você não pode ajustar o ângulo por ViewportFrame.
- O recurso de nuvens dinâmicas em Terrain não é afetado.
