You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
3.6 KiB
118 lines
3.6 KiB
# My Bricks
|
|
|
|
一款用 **Godot 4 + GDScript** 开发的打砖块(Breakout)小游戏。新手练手项目,实现了从核心玩法到内容扩展的完整闭环。
|
|
|
|
---
|
|
|
|
## 操作说明
|
|
|
|
| 操作 | 行为 |
|
|
|------|------|
|
|
| 鼠标移动 | 挡板左右移动 |
|
|
| ← / → | 挡板左右移动(键盘备用) |
|
|
| 空格 | 发球 / 进入下一关 / 重新开始 |
|
|
|
|
主菜单用 **开始游戏 / 退出** 按钮。
|
|
|
|
---
|
|
|
|
## 玩法
|
|
|
|
- 移动挡板反弹小球,击碎场上所有砖块即可过关
|
|
- 共 **3 关**,逐关递进(普通砖块 → 笑脸 → 金字塔+不可破坏墙柱)
|
|
- 砖块有 1/2/3 血,颜色绿/黄/红区分
|
|
- 击碎砖块有 **15% 概率** 掉落道具,掉到底部之前接住生效
|
|
- 球从底部出界扣命,**3 命耗尽** → Game Over
|
|
|
|
### 已实现道具
|
|
|
|
| 颜色 | 标签 | 效果 |
|
|
|------|------|------|
|
|
| 绿 | W | 挡板变宽 10 秒 |
|
|
| 粉 | L | +1 命 |
|
|
| 黄 | M | 多球(暂未实现) |
|
|
| 蓝 | S | 减速(暂未实现) |
|
|
|
|
---
|
|
|
|
## 技术要点
|
|
|
|
- **引擎**:Godot 4.x(GL Compatibility 渲染器,桌面/网页通吃)
|
|
- **语言**:GDScript
|
|
- **分辨率**:1280 × 720
|
|
- **物理层**:Layer 1 = World(挡板/墙),Layer 2 = Brick
|
|
- **关卡数据驱动**:`data/level_*.gd` 是字符串网格,改关卡不用改代码
|
|
- **信号解耦**:砖块不知道分数谁管,只广播"我碎了";Main 收到后加分/判定
|
|
- **音效**:用 `AudioStreamWAV` 程序合成(hit/break/lost/win),无外部素材依赖
|
|
- **道具**:Area2D 下落,被挡板接到时发信号
|
|
|
|
---
|
|
|
|
## 目录结构
|
|
|
|
```
|
|
my-bricks/
|
|
├── scenes/ # 场景文件
|
|
│ ├── main.tscn # 主场景
|
|
│ ├── ball.tscn
|
|
│ ├── paddle.tscn
|
|
│ ├── brick.tscn
|
|
│ ├── lose_zone.tscn
|
|
│ ├── power_up.tscn # 道具
|
|
│ └── ui/
|
|
│ ├── main_menu.tscn
|
|
│ └── hud.tscn
|
|
├── scripts/ # 脚本
|
|
│ ├── main.gd # 状态机 + 信号中心
|
|
│ ├── ball.gd # 反弹 + 提速
|
|
│ ├── paddle.gd # 移动 + 加宽
|
|
│ ├── brick.gd # 血量 + 掉落
|
|
│ ├── power_up.gd # 道具
|
|
│ ├── audio.gd # 程序合成音效
|
|
│ ├── level.gd # 关卡生成器
|
|
│ └── ui/
|
|
│ ├── main_menu.gd
|
|
│ └── hud.gd
|
|
├── data/ # 关卡数据
|
|
│ ├── level_1.gd
|
|
│ ├── level_2.gd
|
|
│ └── level_3.gd
|
|
├── docs/ # 设计文档
|
|
│ ├── architecture.md
|
|
│ ├── design.md
|
|
│ └── milestones.md
|
|
└── assets/ # 预留:图片/音频资源
|
|
```
|
|
|
|
---
|
|
|
|
## 运行
|
|
|
|
1. 安装 [Godot 4 稳定版](https://godotengine.org/)
|
|
2. 在 Godot 里 `Import` → 选本目录的 `project.godot`
|
|
3. 编辑器里按 `F5` 跑
|
|
|
|
---
|
|
|
|
## 调参
|
|
|
|
所有参数都在对应脚本的 `@export` 里,编辑器里直接拖:
|
|
|
|
- 球速:[ball.gd](scripts/ball.gd) `speed` / `max_speed`
|
|
- 挡板速度:[paddle.gd](scripts/paddle.gd) `speed`
|
|
- 道具掉落概率:[brick.gd](scripts/brick.gd) `power_up_drop_chance`
|
|
- 关卡内容:[data/level_*.gd](data/)
|
|
|
|
---
|
|
|
|
## 进度
|
|
|
|
按 [docs/milestones.md](docs/milestones.md) 走完 M0~M4:
|
|
|
|
| 里程碑 | 内容 | 状态 |
|
|
|--------|------|------|
|
|
| M0 | 环境搭建 | ✅ |
|
|
| M1 | 核心玩法闭环 | ✅ |
|
|
| M2 | 手感打磨(反弹角度 / 提速 / 碎砖反馈) | ✅ |
|
|
| M3 | 多关卡 + 主菜单 + 音效 + 加宽道具 | ✅ |
|
|
| M4 | README + 导出 | ✅ |
|
|
|