# beatany1 **Repository Path**: larntin/beatany1 ## Basic Information - **Project Name**: beatany1 - **Description**: 学习教程 Create a Beat 'em up game in Godot 基于Godot4.7开发游戏源码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-29 - **Last Updated**: 2026-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # beatany1 一个用 Godot 4.7 开发的 2D 横版清版格斗游戏(Beat 'Em Up),像素风格。 目前处于跟随教程的学习阶段:核心的角色控制、动画状态机、攻击判定和可破坏道具已经跑通。后续计划替换全套美术并加入原创剧情,做成独立作品。 ## 运行 需要 Godot 4.7 或更高版本(本机放在 `C:\Users\dengd\workspace\tools\Godot_v4.7.2-stable_win64.exe\`)。 ```bash # 直接运行(主场景 world.tscn) Godot_v4.7.2-stable_win64.exe --path . # 打开编辑器 Godot_v4.7.2-stable_win64.exe -e --path . ``` 也可以在 Godot 项目管理器里「导入」本目录的 `project.godot`,然后按 F5 运行。 首次打开会导入全部资源,需要等一会儿;导入产物在 `.godot/`,已被 git 忽略。 ## 操作 | 动作 | 按键 | |---|---| | 移动 | 方向键 / `W` `A` `S` `D` / 手柄左摇杆、十字键 | | 攻击 | `J` | | 跳跃 | `K` | | 飞踢 | 跳跃中按 `J` | 移动是四向的:横版清版游戏里上下键控制的是「远近」(在地面上前后走位),不是爬升。 ## 当前进度 已实现: - 角色移动,带加速度和摩擦力的平滑手感 - 基于 `AnimationPlayer` 方法轨道驱动的状态机(待机 / 行走 / 出拳 / 起跳 / 滞空 / 落地 / 飞踢) - 伪 3D 跳跃:用高度变量抬升精灵,碰撞体留在地面 - 攻击判定:攻击框与受击框通过信号解耦,攻击框的开关由动画轨道逐帧控制 - 可破坏道具:木桶被击中后按受力方向击飞、旋转淡出并销毁 - 单向推进的摄像机,配随镜头移动的左右隐形墙 尚未接入(素材已在 `assets/` 里备好,代码还没用到):敌人与 AI、血条与头像 UI、音效与背景音乐、枪与刀等武器、酒吧等其他场景、多关卡与关卡切换。 ## 目录结构 ``` world.tscn / world.gd 主场景:摄像机推进、演员容器 scenes/ character/ 角色基类场景 character.tscn + 玩家 player.tscn 动画(含方法轨道与攻击框开关轨道)定义在 player.tscn 里 colliders/ 攻击框 DamageEmitter、受击框 DamageReceiver props/ 可破坏道具,目前是木桶 stage/ 关卡背景与世界碰撞 assets/ 美术、字体、音乐、音效 ``` ## 技术要点 游戏逻辑与动画数据是深度耦合的 —— 状态的切换靠动画里的方法轨道回调,攻击框的开关靠动画里的值轨道。改动画就等于改逻辑。渲染上用的是 100×64 的逻辑分辨率整数倍放大,所有坐标以个位数像素为单位。 详细的架构说明、约束和踩过的坑记录在 [CLAUDE.md](CLAUDE.md)。 ## 素材许可 字体的授权信息见 `assets/fonts/LICENSE.txt` 和 `assets/fonts/FONTLOG.txt`。其余美术与音频素材来自教程配套资源包。