Godot进行2D游戏开发入门-常用节点Node

前言

Godot 4.x2D 游戏开发中,合理使用不同类型的节点是构建游戏逻辑、画面和交互的基础。
以下是 最常用、最核心的 2D 节点分类与详解

基础容器类(组织结构)

节点 用途 说明
Node2D 通用 2D 容器 最基础的 2D 节点,用于分组、作为父节点,无视觉或物理功能
CanvasLayer UI 或 HUD 层 用于创建不受摄像机影响的界面(如血条、分数),可设置 layer 优先级

✅ 建议:

所有 2D 游戏对象都应放在 Node2D 或其子类下。

角色与移动对象

节点 用途 关键方法/特性
CharacterBody2D 玩家、敌人等可控角色 - 使用 move_and_slide()- 提供 is_on_floor() 等检测- 需搭配 CollisionShape2D
RigidBody2D 受物理影响的物体(如箱子、球) - 自动受重力、力、碰撞影响- 可设 mode(Static/Kinematic/Character/Rigid)- 性能开销较高
AnimatableBody2D 可移动的静态平台(Godot 4 新增) - 替代旧版“移动的 StaticBody”- 可通过动画或脚本移动,仍能被 CharacterBody2D 站在上面

⚠️ 注意:

不要用 RigidBody2D 做玩家控制角色!响应延迟高,难以精确控制。

环境与静态物体

节点 用途
StaticBody2D 地面、墙壁、不可移动障碍物
TileMap 大型关卡地图(由图块拼接)→ 需配合 TileSet 资源,支持碰撞、导航、Z-index 等

注意

TileMap 是做平台关卡、RPG 地图的首选!

视觉渲染节点

节点 用途 说明
Sprite2D 显示单张图片(PNG/JPG) 支持翻转、缩放、调色
AnimatedSprite2D 播放帧动画 需配置 SpriteFrames 资源
TextureRect 显示带纹理的矩形(常用于 UI) 可拉伸、裁剪、九宫格
ColorRect 纯色矩形 极轻量,适合做背景、遮罩、地面颜色块
Polygon2D 自定义多边形图形 可编程绘制任意形状(如血条、特效)
Light2D + CanvasModulate 2D 光照与全局色调 需启用 Rendering → Quality → 2D → Use Lighting

交互与检测

节点 用途 典型场景
Area2D 触发区域(非物理碰撞) - 伤害区域(火焰)- 拾取范围(金币)- 进入/离开事件(area_entered
RayCast2D 射线检测 - 检测前方是否有墙- 实现“视线”或“攻击判定”
CollisionShape2D 必须作为子节点 CharacterBody2D / StaticBody2D / Area2D 提供碰撞形状(矩形、圆形、胶囊、多边形等)

注意:

Area2D 不会阻挡角色,只用于“感知”;CollisionShape2D 才是物理碰撞的基础。

摄像机与视图

节点 用途
Camera2D 控制玩家视角
ParallaxBackground + ParallaxLayer 视差滚动背景

注意:

✅ 把 Camera2D 作为角色的子节点,再启用 Current 属性即可自动跟随。

UI 与界面

虽然属于 2D,但 UI 使用 Control 节点体系:

节点 用途
Label 显示文字
Button 可点击按钮
TextureButton 图片按钮
Panel / PanelContainer 背景面板
VBoxContainer / HBoxContainer 自动排版布局

注意:

💡 UI 节点通常放在 CanvasLayer 下,避免被游戏摄像机影响。

实用工具节点

节点 用途
Timer 延时或周期执行(如技能冷却)
Tween 补间动画(移动、淡入淡出等)
AudioStreamPlayer2D 2D 空间音效(随距离衰减)
YSort 自动按 Y 坐标排序子节点(解决角色穿插问题)

推荐项目结构示例

1
2
3
4
5
6
7
8
9
10
11
Main (Node2D)
├── World (Node2D)
│ ├── Player (CharacterBody2D)
│ ├── Enemies (Node2D)
│ ├── Ground (StaticBody2D)
│ └── TileMap
├── Camera2D
├── UI (CanvasLayer)
│ ├── HealthBar (TextureProgress)
│ └── ScoreLabel (Label)
└── Music (AudioStreamPlayer)

总结

类别 必学节点
角色 CharacterBody2D + CollisionShape2D
地面 StaticBody2D + CollisionShape2DTileMap
动画 AnimatedSprite2D
触发 Area2D + CollisionShape2D
摄像机 Camera2D
UI Label, Button, TextureRect