HOME / 第 5 部分 · 3D 游戏开发 / 第 53 课
MODULE 5 · 3D 游戏开发

第 53 课 · 3D 环境:天空、雾与光照

⏱ 预计时长 35 分钟📊 难度 进阶📚 模块 第 5 部分 · 3D 游戏开发

🎯 本课学习目标

3D 场景的氛围由环境(Environment)决定。本课让世界有天空、有雾、有氛围。

📖 详细教学步骤

添加 WorldEnvironment搭建

  1. 场景添加子节点 WorldEnvironment
  2. 检查器 Environment → 新建 Environment 资源
  3. 资源面板会出现 Environment,展开配置

设置天空实操

  1. Environment → Background Mode 设为 Sky
  2. Sky → Sky Material → 新建 ProceduralSkyMaterial
  3. 立刻出现程序化天空(渐变 + 太阳)
  4. 调 Sky Top Color / Horizon Color 换天空色

💡 ProceduralSky 自动生成天空,不用图片。

环境光实操

  • Ambient Light → Source:环境光来源
  • Color:环境光颜色(偏蓝 = 冷调)
  • Energy:环境光强度
  • 环境光让阴影处不漆黑

雾与景深实操

雾增加距离感(远山朦胧):

  • Fog → Enabled 勾选
  • Light Color:雾颜色
  • Density:雾密度(越大越浓)
  • Begin/End:雾开始/结束距离

💡 大世界游戏必备,还能隐藏远处加载。

做黄昏氛围实操

组合拳:

  1. 天空 Top Color 调深紫、Horizon Color 调橙红
  2. 太阳光 Light Color 调橙、Energy 调 0.8
  3. 环境光调紫蓝、Energy 0.3
  4. 雾 Light Color 调橙紫、Density 0.02

💡 氛围全在「颜色 + 能量」组合里。

用代码切换环境代码

动态切白天黑夜:

GDSCRIPTextends WorldEnvironment

func _ready():
    var env: Environment = environment

func set_night():
    # 天空变深
    var sky_mat: ProceduralSkyMaterial = environment.sky.sky_material
    sky_mat.sky_top_color = Color(0.03, 0.03, 0.1)
    sky_mat.sky_horizon_color = Color(0.1, 0.05, 0.2)
    # 灯光变暗
    $Sun.light_energy = 0.2
⚠️
天空是黑的?

Background Mode 必须设为 Sky 而不是 Clear Color,且 Sky Material 已创建。

⚠️
雾太浓看不清?

Density 调小(0.01-0.05)或调远 Begin/End 距离。

🧪 动手试一试

🏋️ 课后练习

把场景调成「黄昏」:紫色天空 + 橙色阳光 + 轻微橙色雾,再写代码一键切到「夜晚」。

WorldEnvironment 三件套:Sky + Ambient + Fog + 灯光配色。

💡

氛围配色原则:光源暖(橙)、环境冷(蓝)对比最舒服。

💡

Environment 是资源,可存 .tres 复用给多个场景。

🎓 本课小结

WorldEnvironment + Environment 配置天空(ProceduralSky)、环境光、雾;颜色+能量组合调出黄昏/夜晚氛围;代码可动态切换。