替换美术资源
May 12
到目前为止小鸟还是 Godot 的"机器人头",水管也是个矩形 — 这一章给游戏换上真正的美术资源,从「白板原型」一秒变成「真游戏」。✨
我们要做:
- 准备 + 导入美术素材
- 替换小鸟、水管的精灵图
- 加上滚动的地面和背景(这是 Flappy Bird "横向飞行错觉"的灵魂)
准备美术资源
我用的素材来源:TODO 素材链接
你也可以自己画、或者从这些免费站找:
- itch.io 免费素材
- Kenney.nl(CC0 免版权)
- OpenGameArt
需要这几样:
bird.png— 小鸟(推荐 3 帧动画,扑翅膀更生动)pipe.png— 水管ground.png— 地面background.png— 背景(最好做成左右无缝拼接的)

导入设置:像素美术别变模糊
把 .png 文件拖进 Godot 项目,默认导入会用双线性插值把像素图变得模糊糊的,这不是我们要的复古感觉。
⚠️ 像素美术必须把 Filter 设为
Nearest。
选中图片资源 → 上方【导入】标签页 → Compress / Mode = Lossless + Filter 设为 Nearest → 点击「重新导入」。

或者一劳永逸:项目设置 → 渲染 → 纹理 → Canvas Textures > Default Texture Filter = Nearest,整个项目所有图片都默认 Nearest。
替换小鸟
打开 bird.tscn,选中 Sprite2D 节点,把它的 Texture 换成 bird.png。

碰撞体也要对应调整:选中 CollisionShape2D,把矩形缩放到正好包住新的小鸟图。
💡 小贴士:碰撞体可以略小于图片(特别是小鸟)。这样玩家会觉得"我明明擦边过去了"的判定更宽容,手感更好。这是 Flappy Bird 类游戏的隐藏秘诀之一。
(可选)小鸟扑翅膀动画
如果你的 bird.png 是 3 帧的 sprite sheet,可以把 Sprite2D 换成 AnimatedSprite2D,然后用 SpriteFrames 资源做帧动画。这部分稍微进阶一点,你可以先跳过 — 不影响后续。
替换水管
打开 pillar_pair.tscn,选中两个 Sprite2D(上下水管),把它们的 Texture 都换成 pipe.png。

上水管要垂直翻转(在 Inspector 里勾选 Flip V)。
碰撞体同样调整到包住水管的大小。
滚动地面 + 背景(重头戏 🎬)
Flappy Bird 的精髓 — 小鸟其实在原地扑腾,背景和地面在向左移动,制造出"鸟在向右飞"的错觉。
Godot 4.3+ 有专门的 Parallax2D 节点,自带 autoscroll(自动滚动)和 repeat(无缝循环),非常好用。
添加滚动背景
在 main.tscn 的根节点下添加:
Parallax2D(重命名BG)Sprite2D—Texture设为background.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。这样画面整体定住,更有"撞死"的仪式感。
测试运行
现在游戏应该长这样:
- ✅ 真正的小鸟在画面里扑腾
- ✅ 水管是绿色(或你的素材颜色)的管子
- ✅ 背景缓缓向左滚动 + 地面快速向左滚动 → 视差错觉
- ✅ 撞死瞬间,背景立刻定住

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