替换美术资源
May 12
到目前为止小鸟还是 Godot 的"机器人头",水管也是个矩形 — 这一章给游戏换上真正的美术资源,从「白板原型」一秒变成「真游戏」。✨
我们要做:
- 准备 + 导入美术素材
- 替换小鸟、水管的精灵图
- 加上滚动的地面和背景(这是 Flappy Bird "横向飞行错觉"的灵魂)
准备美术资源
这个游戏的像素美术全部是我自己用 Aseprite 画的 — 小鸟、水管、背景、地面、UI 按钮和引导手指。
画像素画其实门槛比想象中低:小鸟就是 16×16 的一小块,水管更简单,纯色矩形加个边就行。第一次画不好看也没关系,先跑起来比先画好看重要得多。
如果你不想自己画,可以从这些免费站找:
- itch.io 免费素材
- Kenney.nl(CC0 免版权)
- OpenGameArt
需要这几样:
bird.png— 小鸟pipe.png— 水管progress.png— 跑道bg.png— 背景(最好做成左右无缝拼接的)

导入设置:像素美术别变模糊
把 .png 文件拖进 Godot 项目,默认导入会用双线性插值把像素图变得模糊糊的,这不是我们要的复古感觉。

项目设置 → 渲染 → 纹理 → 画布纹理 > 默认纹理过滤 = Nearest。
替换小鸟
打开 bird.tscn,选中 Sprite2D 节点,把它的 Texture 换成 bird.png。

碰撞体也要对应调整:选中 CollisionShape2D,把圆形缩放到正好包住小鸟。
💡 小贴士:碰撞体可以略小于图片(特别是小鸟)。这样玩家会觉得"我明明擦边过去了"的判定更宽容,手感更好。这是 Flappy Bird 类游戏的隐藏秘诀之一。
替换水管
打开 pillar_pair.tscn,选中两个 Sprite2D(上下水管),把它们的 Texture 都换成 pipe.png。

上水管要垂直翻转(在 Inspector 里勾选 Flip V)。
碰撞体同样调整到包住水管的大小。
滚动地面 + 背景(重头戏 🎬)
Flappy Bird 的精髓 — 小鸟其实在原地扑腾,背景和地面在向左移动,制造出"鸟在向右飞"的错觉。
Godot 4.3+ 有专门的 Parallax2D 节点,自带 autoscroll(自动滚动)和 repeat(无缝循环),非常好用。
添加滚动背景
在 main.tscn 的根节点下添加:
Parallax2D(重命名BG)Sprite2D—Texture设为bg.png

选中 BG,在 Inspector 里设置:
| 属性 | 值 | 作用 |
|---|---|---|
Autoscroll > x | -50(或你喜欢的速度) | 每秒向左移动多少像素 |
Repeat Size > x | 背景图宽度 | 让它无缝循环 |
Repeat Times | 3 或更大 | 重复多少次(保证屏幕外有备用) |
负值表示向左滚动;正值表示向右。
添加滚动地面
同样的方式,加一个 Parallax2D(重命名 Progress):
Parallax2D(Progress)Sprite2D—Texture设为ground.png
Autoscroll.x 可以比背景快(比如 -150),制造"近景快、远景慢"的视差感(这就是 Parallax 这个词的来源)。

💡 这两个节点的 z-index 注意一下:背景
BG要在最底层(z 最小),地面Progress在小鸟之上(z 最大,遮住可能的视觉穿帮)。
让背景在游戏结束时停下来
还记得 上一章 main.gd 里这两行吗?
func _on_game_state(new_state) -> void:
if new_state == GameManager.GameState.GAME_OVER:
$BG.autoscroll.x = 0
$Progress.autoscroll.x = 0
它做的就是:游戏结束时把背景/地面的滚动速度设为 0。这样画面整体定住,更有"撞死"的仪式感。
测试运行
现在游戏应该长这样:
- ✅ 真正的小鸟在画面里扑腾
- ✅ 水管是绿色(或你的素材颜色)的管子
- ✅ 背景缓缓向左滚动 + 地面快速向左滚动 → 视差错觉
- ✅ 撞死瞬间,背景立刻定住

是不是一瞬间像个游戏了?🎮
下一章给它加上音效 — 翅膀扇动、得分、碰撞,最后一点"灵魂"。