HOME / 第 5 部分 · 3D 游戏开发 / 第 47 课
MODULE 5 · 3D 游戏开发
第 47 课 · 3D 节点类型详解
🎯 本课学习目标
- 掌握常用 3D 节点
- 理解 Node3D 的变换
- 会用 CSG 快速建模原型
3D 世界里的积木更多样。本课认识常用 3D 节点,并用 CSG 快速搭建原型。
📖 详细教学步骤
常用 3D 节点一览概念
| 节点 | 用途 |
|---|---|
| Node3D | 所有 3D 节点基类(位置/旋转/缩放) |
| MeshInstance3D | 显示 3D 网格(物体本体) |
| Camera3D | 3D 相机(画面来源) |
| DirectionalLight3D | 太阳光(平行光) |
| OmniLight3D | 点光源(灯泡) |
| SpotLight3D | 聚光灯(手电筒) |
| CharacterBody3D | 3D 角色物理体 |
| StaticBody3D | 3D 静态碰撞体 |
| AudioStreamPlayer3D | 3D 音效(第 45 课) |
Node3D 的变换属性概念
与 2D 类似,Node3D 有:
position:相对父节点位置(Vector3)rotation:欧拉角旋转(radians)rotation_degrees:以度为单位更方便scale:缩放(Vector3)
GDSCRIPTextends Node3D
func _ready():
position = Vector3(2, 1, 0) # 2米右、1米上
rotation_degrees = Vector3(0, 45, 0) # Y 轴转 45°
scale = Vector3(2, 1, 1) # X 方向拉长 2 倍
CSG:快速建模原型实操
CSG(构造实体几何)用简单形状组合成复杂物体,做原型超快:
- 添加
CSGBox3D(长方体) - 在它下面加
CSGCylinder3D(圆柱)当柱子 - 子 CSG 节点会自动「加减」组合(操作 Operation 属性:交集/差集)
- CSG 自带碰撞,运行时自动生成网格
💡 用 CSG 搭关卡原型,比建模软件快得多。
用 CSG 搭一座房子实操
- CSGBox3D:墙(长 4、高 3、宽 4)
- 子 CSGBox3D 移上去当屋顶(操作设为减法可掏空)
- 加一个 CSGCylinder3D 当烟囱
- 选中所有 CSG 节点,让它们组合成一个物体
💡 原型阶段先用默认灰色,后面换材质。
把 CSG 转成正式网格进阶
原型确定后,可以把 CSG 烘焙成正式网格:
- 选中 CSG 节点 → 顶部菜单 Mesh → 转换为 MeshInstance(或其他)
- 生成 MeshInstance3D + 碰撞体,之后可加正式材质
⚠️
3D 物体位置明明是 (0,0,0) 却在半空?
检查父节点是否有偏移,或自身 position 的 Y 值。3D 中 Y 是高度。
⚠️
CSG 组合不出来?
子 CSG 的操作属性(Operation)要与父不同才能加减;默认是「并集」。
🧪 动手试一试
🏋️ 课后练习
用 CSG 搭一个「桌子」原型:桌面 + 4 条腿,并练习用 rotation_degrees 把其中一条腿转 30 度。
CSGBox3D 桌面 (2,0.1,1),4 个 CSGBox3D 腿 (0.1,1,0.1)。
💡
3D 中 Y 是上,建房子时高度全在 Y 轴。
💡
CSG 是原型利器,正式版再换模型。
🎓 本课小结
常用 3D 节点:MeshInstance3D 显示、Camera3D 画面、三类灯光、三类物理体;CSG 快速建模原型并自动带碰撞。