# GodotTowerDefense **Repository Path**: Giab/godot-tower-defense ## Basic Information - **Project Name**: GodotTowerDefense - **Description**: No description available - **Primary Language**: Unknown - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 2 - **Created**: 2024-04-14 - **Last Updated**: 2025-11-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🏰 Godot Tower Defense 一个使用 Godot 4.2 开发的轻量级塔防游戏 Demo。 ![itch.io试玩画面](docs/image.png) [🎮 在线试玩](https://godot-li.itch.io/godot-tower-defense) | [📖 教程视频](https://www.bilibili.com) | [💬 QQ频道](https://pd.qq.com/s/n93zqynt) | [⭐ 知识星球](https://t.zsxq.com/12B5zOA6n) --- ## 📋 目录 - [项目简介](#项目简介) - [游戏特色](#游戏特色) - [技术栈](#技术栈) - [项目结构](#项目结构) - [快速开始](#快速开始) - [游戏玩法](#游戏玩法) - [📚 图文教程](#图文教程) - [开发计划](#开发计划) - [开源地址](#开源地址) - [资源来源](#资源来源) - [支持作者](#支持作者) --- ## 📖 项目简介 这是【老李游戏学院】系列教程的第 6 个 Demo 项目。本项目采用 Godot 4.2 引擎开发,是一个完整的塔防游戏实现,代码结构清晰,易于学习和扩展。 **当前状态:** 🐛 DEBUG 阶段 --- ## ✨ 游戏特色 - 🎯 **完整的塔防游戏机制** - 防御塔建造与升级系统 - 多种敌人类型(5种敌人) - 多样化的子弹系统 - 路径追踪与自动瞄准 - 🎨 **精美的视觉效果** - 像素风格美术资源 - 爆炸特效动画 - 流畅的游戏动画 - 🔊 **丰富的音效系统** - 背景音乐 - 战斗音效(爆炸、击中、受伤等) - UI 交互音效 - 💻 **轻量级架构** - 代码结构清晰,易于理解 - 模块化设计,便于扩展 - 使用 Godot 4.2 最新特性 - 🔧 **高度可扩展** - 支持自定义防御塔类型 - 支持自定义敌人类型 - 支持自定义子弹类型 --- ## 🛠 技术栈 - **游戏引擎:** Godot 4.2 - **开发语言:** GDScript - **渲染模式:** Mobile(支持移动端) - **平台支持:** Windows, Web, Mobile --- ## 📁 项目结构 ``` godot-tower-defense/ ├── assets/ # 游戏资源 │ ├── fonts/ # 字体文件 │ ├── sound/ # 音效和音乐 │ └── textures/ # 贴图资源 │ ├── bullet/ # 子弹贴图 │ ├── enemy/ # 敌人贴图 │ ├── explosion/ # 爆炸特效 │ ├── tower/ # 防御塔贴图 │ └── widget/ # UI 组件贴图 ├── source/ # 源代码 │ ├── actor/ # 游戏角色 │ │ ├── bullet/ # 子弹系统 │ │ ├── enemy/ # 敌人系统 │ │ └── tower/ # 防御塔系统 │ └── UI/ # 用户界面 │ ├── game_form.gd # 主游戏界面 │ ├── w_game_over.gd # 游戏结束界面 │ └── w_tower.gd # 防御塔选择界面 ├── main.gd # 主游戏逻辑 ├── main.tscn # 主场景文件 └── project.godot # 项目配置文件 ``` ### 核心系统 - **防御塔系统(Tower)** - 自动瞄准和攻击 - 冷却时间机制 - 多子弹连发支持 - 可配置伤害和成本 - **敌人系统(Enemy)** - 路径跟随移动 - 生命值系统 - 到达终点造成伤害 - 击杀获得金币奖励 - **子弹系统(Bullet)** - 追踪目标敌人 - 碰撞检测 - 伤害计算 - **UI 系统** - 金币显示 - 生命值显示 - 防御塔选择界面 - 游戏结束界面 --- ## 🚀 快速开始 ### 环境要求 - Godot 4.2 或更高版本 - Windows / Linux / macOS ### 运行步骤 1. **克隆项目** ```bash git clone https://github.com/Liweimin0512/GodotTowerDefense.git cd godot-tower-defense ``` 2. **使用 Godot 打开项目** - 下载并安装 [Godot 4.2](https://godotengine.org/download) - 打开 Godot 编辑器 - 选择 "导入" → 选择项目文件夹 - 打开 `main.tscn` 场景 3. **运行游戏** - 点击编辑器顶部的 "运行" 按钮(F5) - 或直接运行 `main.tscn` 场景 ### 构建发布 1. 在 Godot 编辑器中,选择 **项目 → 导出** 2. 配置导出预设(Windows / Web / Android / iOS) 3. 点击 "导出项目" --- ## 🎮 游戏玩法 1. **建造防御塔** - 点击界面底部的防御塔按钮 - 在可放置区域(绿色区域)点击鼠标左键放置 - 右键取消放置 2. **防御敌人** - 敌人会沿着路径移动 - 防御塔会自动攻击范围内的敌人 - 阻止敌人到达终点 3. **资源管理** - 击杀敌人获得金币 - 使用金币建造更多防御塔 - 保护基地生命值 4. **游戏目标** - 尽可能长时间生存 - 消灭所有敌人 - 获得更高分数 --- ## 📚 图文教程 本教程将带你从零开始,使用 Godot 4.2 开发一个完整的塔防游戏。教程分为以下几个部分: ### 📖 教程目录 #### 第一部分:项目准备 - **0. 项目介绍** - 了解项目整体架构和学习目标 - **1. 新建项目** - 创建 Godot 项目并配置基础设置 #### 第二部分:地图与路径系统 - **2. TileMap绘制和Path2D敌人路径** - 使用 TileMap 绘制游戏地图,创建敌人移动路径 #### 第三部分:敌人系统 - **3. 敌人Enemy场景实现** - 创建敌人场景,配置精灵和碰撞体 - **4. 敌人Enemy沿Path2D节点移动** - 实现敌人沿路径自动移动的逻辑 #### 第四部分:防御塔系统 - **5. 防御塔Tower场景实现并LookAt敌人** - 创建防御塔场景,实现自动瞄准功能 - **6. 子弹Bullet实例化攻击敌人** - 创建子弹系统,实现子弹追踪敌人 - **7. 向敌人开火!消灭敌人** - 完善攻击系统,实现伤害计算和敌人死亡 #### 第五部分:UI 系统 - **8. 编辑UI、选中防御塔W_Tower控件实现** - 创建防御塔选择 UI 控件 - **9. 拖拽Tower到场景中、预览防御塔** - 实现防御塔预览和拖拽功能 - **10. 放置防御塔,取消预览防御塔** - 完善防御塔放置和取消逻辑 - **11. 判断能否放置防御塔、激活防御塔** - 实现放置区域检测和防御塔激活 #### 第六部分:游戏逻辑 - **12. 玩家生命值与金币初始化和UI显示** - 初始化游戏资源,创建 UI 显示 - **13. 玩家生命值和金币改变相关逻辑** - 实现资源变化和 UI 更新逻辑 - **14. 扩展更多不同防御塔并处理UI显示** - 添加多种防御塔类型 - **15. 防御塔摆放金币消耗** - 实现防御塔建造的资源消耗系统 #### 第七部分:特效与完善 - **16. 新增线性子弹** - 实现不同类型的子弹系统 - **17. 新增爆炸效果** - 添加爆炸特效和动画 - **18. 游戏结束弹窗和重新开始游戏实现** - 完善游戏流程,添加游戏结束和重玩功能 ### 🎯 学习路径 ``` 项目准备 → 地图系统 → 敌人系统 → 防御塔系统 → UI系统 → 游戏逻辑 → 特效完善 ↓ ↓ ↓ ↓ ↓ ↓ ↓ 0-1 2 3-4 5-7 8-11 12-15 16-18 ``` ### 📝 教程说明 - **视频教程:** 每个章节都配有详细的视频讲解(已发布) - **图文教程:** 每个章节都有对应的图文说明和代码示例(计划中) - **代码注释:** 项目代码包含详细的中文注释,便于理解 - **分步学习:** 建议按照章节顺序学习,循序渐进 ### 💡 学习建议 1. **循序渐进**:按照章节顺序学习,每个部分都建立在前一部分的基础上 2. **动手实践**:跟随教程自己实现一遍,不要只是看代码 3. **理解原理**:理解每个系统的设计思路,而不仅仅是复制代码 4. **扩展练习**:完成基础功能后,尝试添加自己的创意功能 5. **查阅文档**:遇到不理解的 API,及时查阅 [Godot 官方文档](https://docs.godotengine.org/) ### 🎓 各阶段学习重点 - **第一部分(0-1)**:熟悉 Godot 编辑器,了解项目结构 - **第二部分(2)**:掌握 TileMap 和 Path2D 的使用 - **第三部分(3-4)**:理解节点系统、信号系统和路径跟随 - **第四部分(5-7)**:学习场景实例化、碰撞检测和伤害系统 - **第五部分(8-11)**:掌握 UI 系统、输入处理和状态管理 - **第六部分(12-15)**:学习游戏资源管理和 UI 数据绑定 - **第七部分(16-18)**:完善游戏体验,添加特效和游戏流程 ### 🔗 相关链接 - [📺 视频教程(哔哩哔哩)](https://www.bilibili.com) - 完整视频教程(已发布) - [📖 图文教程大纲](./docs/TUTORIAL_OUTLINE.md) - 详细的图文教程编写大纲 - [🔧 重构计划](./docs/REFACTORING_PLAN.md) - 项目重构和优化计划 - [📖 图文教程(知识星球)](https://t.zsxq.com/12B5zOA6n) - 详细图文教程和源码解析(计划中) - [💬 学习交流(QQ频道)](https://pd.qq.com/s/n93zqynt) - 加入社区与其他开发者交流 - [📚 Godot 官方文档](https://docs.godotengine.org/) - 查阅 API 和功能说明 --- ## 📅 开发计划 - [x] 基础塔防机制 - [x] 多种敌人类型 - [x] UI 系统 - [x] 音效系统 - [ ] 防御塔升级系统 - [ ] 关卡系统 - [ ] 成就系统 - [ ] 3D 版本开发 --- ## 🔗 开源地址 本项目已在以下平台开源,欢迎 Star ⭐: - **Gitee:** https://gitee.com/Giab/godot-tower-defense - **GitHub:** https://github.com/Liweimin0512/GodotTowerDefense --- ## 📚 资源来源 本课程使用的素材来自 [Kenney.nl](https://www.kenney.nl/assets/tappy-plane),有条件的同学可以支持原作者。 --- ## 💝 支持作者 ### 加入知识星球 欢迎加入【老李游戏学院】知识星球,获取更多游戏开发教程和资源: ![知识星球二维码](https://foruda.gitee.com/images/1713711089456270963/f55a7961_629385.jpeg) [🔗 知识星球链接](https://t.zsxq.com/12B5zOA6n) ### 加入 QQ 频道 加入我们的 QQ 频道,与其他开发者交流: [🔗 QQ频道链接](https://pd.qq.com/s/n93zqynt) ### 请我喝咖啡 如果你觉得我的工作不错,也可以请我喝杯咖啡 ☕ --- ## 📝 许可证 本项目采用开源许可证,详见 [LICENSE](LICENSE) 文件。 --- ## 🙏 致谢 感谢所有支持本项目的朋友们! **大家加油!** 💪