HOME / 第 5 部分 · 3D 游戏开发 / 第 53 课
MODULE 5 · 3D 游戏开发
第 53 课 · 3D 环境:天空、雾与光照
🎯 本课学习目标
- 用 WorldEnvironment 配置天空
- 设置背景、环境光与雾
- 做出黄昏/夜晚氛围
3D 场景的氛围由环境(Environment)决定。本课让世界有天空、有雾、有氛围。
📖 详细教学步骤
添加 WorldEnvironment搭建
- 场景添加子节点
WorldEnvironment - 检查器 Environment → 新建
Environment资源 - 资源面板会出现 Environment,展开配置
设置天空实操
- Environment → Background Mode 设为
Sky - Sky → Sky Material → 新建
ProceduralSkyMaterial - 立刻出现程序化天空(渐变 + 太阳)
- 调 Sky Top Color / Horizon Color 换天空色
💡 ProceduralSky 自动生成天空,不用图片。
环境光实操
- Ambient Light → Source:环境光来源
- Color:环境光颜色(偏蓝 = 冷调)
- Energy:环境光强度
- 环境光让阴影处不漆黑
雾与景深实操
雾增加距离感(远山朦胧):
- Fog → Enabled 勾选
- Light Color:雾颜色
- Density:雾密度(越大越浓)
- Begin/End:雾开始/结束距离
💡 大世界游戏必备,还能隐藏远处加载。
做黄昏氛围实操
组合拳:
- 天空 Top Color 调深紫、Horizon Color 调橙红
- 太阳光 Light Color 调橙、Energy 调 0.8
- 环境光调紫蓝、Energy 0.3
- 雾 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)、环境光、雾;颜色+能量组合调出黄昏/夜晚氛围;代码可动态切换。