天空箱

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

一个 天空盒 是由六个独立图像组成的立方体,在体验中创建了沉浸式天空背景。当图像设计成完全对齐时,天空盒似乎没有被置于立方体内的印象。这使体验感觉比真实大小要大,并为您的气氛增加深度,例如模拟深空或水下环境。

此外,Sky 对象包括动态显示、上升和设置的天体,例如太阳、月亮和星星,这些天体基于 TimeOfDayClockTime 来出现、上升和设置。

最后,Sky 对象可以用作反射镜的立方图在 ViewportFrames 。详情请参阅视窗框架

天空盒建造

如果你创建了自己的天空盒图像,你必须先导入它们到 Roblox,才能在天空盒中使用它们。每个图像必须在“折叠”成立方体时,沿 所有边缘 无缝地融入邻近图像。


要创建天空盒:

  1. 浏览器 窗口中,插入一个 Sky 对象到 Lighting 服务。

  2. 选择新的 Sky 对象,然后在 属性窗口 中为以下每个天空属性分配纹理:

    • SkyboxBk — 天空箱的 后方 正方形。
    • SkyboxDn — 天空箱的 向下 方块。
    • SkyboxFt — 天空箱的 正面 方块。
    • SkyboxLf — 天空箱的左 方块
    • SkyboxRt — 天空箱的 右侧 正方形。
    • SkyboxUp — 天空盒的上 方块。

天体

默认情况下,Sky 对象包括太阳、月亮和星星等天体。这些身体会动态出现、上升并设置,根据 TimeOfDayClockTime 属性值进行。

您可以通过以下属性来自定义天体:

定向

SkyboxOrientation 属性改变了天空盒表面的方向。属性在典型的 XYZ 顺序中采取一个度值的 ,但旋转首先在 Y 轴上应用,然后 X ,然后 Z 以允许对复杂运动进行预测控制。

一个简单的方法是围绕 Y 轴旋转导航动画(保持水平),然后通过设置 XZ 为固定值来倾斜这个轴。以下脚本,例如,动画 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)

请注意,天空盒的方向是一个低成本功能,可以无缝地在所有平台和视觉质量等级上工作。因此,一些有意的例外包括:

  • 如果天空在打开窗户的室内反射中可见,例如镜面,那么特定反射的视图不会旋转。实现这一点需要昂贵的重新渲染和卷积立方体地图,这将显著影响性能和广泛可用性。
  • 只有天空盒表面旋转;天体不受此属性影响。
  • 如果您在 Sky 中使用了一个 ViewportFrame ,它将反映全球 SkyboxOrientation 值。您无法调整每个 ViewportFrame 角度。
  • 动态云功能在Terrain不受影响。