# AdventureGame_godot **Repository Path**: mrbytes/adventure-game_godot ## Basic Information - **Project Name**: AdventureGame_godot - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-11 - **Last Updated**: 2026-10-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # game_demo_003 基于 **Godot 4.7 + GDScript** 的 2D 像素风横版平台射击小游戏(西部牛仔题材)。玩家在关卡中移动、跳跃、双向射击,击退巡逻敌人、拾取金币、躲避陷阱,并通过关卡门进入下一关。 ## 特性 - 主菜单 + 关卡选择:主菜单动态生成关卡按钮,可自由选关 - 横版平台移动:走、跳、下落穿透单向平台 - 鼠标左键双向射击,子弹带朝向翻转与命中特效 - 敌人巡逻 AI:前方射线碰墙 / 脚下射线悬空时自动转向;靠近玩家触发近战攻击 - 战斗与血量:子弹对敌人造成伤害,敌人攻击与陷阱对玩家造成伤害,带受击闪烁与镜头抖动 - 金币系统:拾取金币回血;敌人被击败时爆出多枚受重力影响的弹跳金币,落地稳定后变为可拾取 - 陷阱:地刺在玩家进入时伸出、离开时缩回(含隐藏式陷阱) - 关卡门(EndDoor):踩到后切换到下一关 - 完整的游戏内 UI:血条、金币计数、暂停面板、结算面板 - 多层视差滚动背景、起跳 / 落地 / 开火 / 命中一次性粒子特效 - 玩家进入复位区域后自动回到出生点 - 像素风渲染(Nearest 纹理过滤,GL Compatibility) ## 操作方式 | 操作 | 按键 | |---|---| | 左 / 右移动 | A / D 或 ← / → | | 跳跃 | Space / W(代码实际读取 `ui_accept`,即 Space / Enter) | | 下落穿透 | S / ↓ | | 射击 | 鼠标左键 | | 暂停 / 继续 | Esc | ## 运行方式 1. 安装 [Godot 4.7](https://godotengine.org/download)(需 4.x) 2. 启动 Godot,选择"导入",打开本项目的 `project.godot` 3. 按 **F5** 运行(主场景为 `scene/MainMenu.tscn`,从主菜单开始) 也可使用命令行: ```powershell godot --path . ``` ## 关卡流程 ``` MainMenu(主菜单,项目入口) ├─ 新游戏 ───────────► scene/main.tscn(第 1 关) └─ 选择关卡 ─────────► 关卡按钮(MainMenu 的 LevelArray) 第 1 关的 EndDoor.nextLevel ─► scene/level001.tscn(第 2 关) 第 2 关的 EndDoor 未设 nextLevel ─► 触发 gameOver,显示结算面板 ``` ## 项目结构 ``` ├── project.godot # 项目配置(输入、碰撞层、Autoload、插件) ├── script/ # GDScript 脚本 │ ├── GameManager.gd # 全局单例:玩家引用、复位、暂停、关卡切换、生成 VFX │ ├── player.gd # 玩家控制、状态机、血量 / 金币、动画与射击 │ ├── enemy.gd # 敌人巡逻 AI、近战攻击、受伤死亡与掉落金币 │ ├── bullet.gd # 子弹移动与命中 │ ├── coin.gd # 金币拾取(Area2D) │ ├── coin_rigid_body.gd # 掉落金币刚体:弹跳、落地、转交拾取 │ ├── CoinRigidBody2d.gd # 与上者内容几乎相同(副本,挂在 coin_rigid_body_2d.tscn) │ ├── EndDoor.gd # 关卡门:进入后跳转下一关 │ ├── PlayerResetArea.gd │ ├── EnemyDamageCaster.gd # 敌人攻击判定框(按动画帧开启) │ ├── Trap.gd / trap_new.gd / hieden_trap.gd # 陷阱 │ ├── UI_Manager.gd # 战斗 UI(血条、金币、暂停、结算) │ ├── MainMeunManager.gd # 主菜单逻辑与关卡按钮生成 │ ├── LevelSelectedButton.gd # 选关按钮 │ └── VFX_Controller.gd ├── scene/ # 场景 │ ├── MainMenu.tscn # 主菜单(项目入口) │ ├── main.tscn # 第 1 关 │ ├── level001.tscn # 第 2 关 │ ├── bullet.tscn / enemy.tscn / coin.tscn / end_door.tscn │ └── vfx/ # 特效场景(命中、起跳、落地、开火) ├── profabs/ # 预制体(注意目录名拼写,勿改) │ ├── player.tscn / UI.tscn │ ├── coin_rigid_body.tscn / coin_rigid_body_2d.tscn │ ├── platform.tscn / area_2d.tscn │ ├── trap_no_ani.tscn / hieden_trap.tscn │ ├── level_selected_button.tscn │ └── background/ # 视差背景预制体 └── Asset/ # 美术、音频素材 ├── Animations/ # 角色与子弹序列帧 ├── Background/ # 视差背景 ├── Tilemap/ # 瓦片集(tileset.tres) └── VFX/ # 特效序列帧 ``` ## 技术说明 - **引擎 / 语言**:Godot 4.7,GDScript - **渲染**:GL Compatibility(Windows: d3d12),像素艺术使用 Nearest 过滤 - **物理**:CharacterBody2D(玩家 / 敌人)、Area2D(子弹 / 金币 / 触发器)、RigidBody2D(掉落金币) - **碰撞层**:1=Level(地形)、2=Player、4=Enemy - **全局管理**:`GameManager` Autoload 单例,负责生成子弹 / 特效、玩家复位、暂停与关卡切换 - 项目还启用了 `godot_mcp` 与 `godot_mini_game` 两个编辑器插件(对应 Autoload `MCPRuntimeProbe` / `MiniGameSDK`),属于开发 / 发布工具,与游戏玩法无关 为 AI 助手和协作者准备的详细开发约定(碰撞层、朝向规则、生成时序陷阱、场景命名约束等)见 [agent.md](./agent.md)。