# TrainWar **Repository Path**: GProReat_admin/train-war ## Basic Information - **Project Name**: TrainWar - **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-05-03 - **Last Updated**: 2026-05-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Train War 🚂🔫 **一款俯视角的火车枪战游戏**,在飞驰的火车上跳跃、射击、躲避手雷。 ## 操作说明 | 按键 | 功能 | |------|------| | **WASD** | 移动(屏幕方向,相机旋转时会自动适应) | | **鼠标左键** | 射击(带标记系统 — 见 G 键) | | **F** | 跳跃到车厢/小车(朝方向键方向) | | **Shift** | 在小车之间跳跃 / 从小车跳回车厢 | | **空格** | 近战攻击(骑在小车上时打爆小车) | | **G** | 标记敌人(鼠标附近 200px 内最近的敌人) | | **M** | 切换小地图(全屏 → 小窗 → 关) | | **P** | 暂停 | | **ESC** | 菜单(返回游戏 / 编辑地图 / 退出) | | **R** | 游戏结束后重新开始 | ### 标记射击系统 1. 按 **G** 标记鼠标附近的敌人(黄色引导线) 2. 点击鼠标左键 → 子弹自动向标记目标开火(50px 内自动命中) 3. 标记系统帮你解决高速移动目标的瞄准困难 ## 敌人类型 ### 🚗 越野车 (Car) - **外形**:方形 SUV,带防撞保险杠、车顶行李架、大越野轮 - **移动**:随机前后移动速度(-20 ~ 40) - **攻击**:投掷手雷(8-12 秒冷却,3 秒预警,AoE 50px,25 伤害) - **血量**:40(随难度递增) - **死亡**:远程打死 → 0.8 秒爆炸;近战砍死 → 冒浓烟继续移动,玩家离开后 3 秒爆炸 ### 🏍️ 摩托车 (Motorcycle) - **外形**:长方形车身带车把(转向指示方向)、排气管、后视镜 - **移动**:始终向前追击(20 ~ 70 速度),车身沿轨道切线方向 - **攻击**:低频射击(3-5 秒冷却) - **血量**:20(随难度递增) ## 玩法机制 ### 移动系统 - **车厢上**:WASD 在车厢平面内移动,物理弹性跟随 - **车厢间**:按 **F** + 方向键跳到相邻车厢 - **小车上**:按 **Shift** + 方向跳到方向上的小车;无方向按 Shift 跳回车厢 - **物理系统**:Box2D 俯视角,玩家圆形碰撞体,车厢围墙 ### 轨道系统 - 使用 **Catmull-Rom 闭合样条**(18 个控制点),蛇形大环轨道 - 弧长参数化映射,支持任意进度(0 ~ 1)定位 - 景物沿轨道法线散布 ### 相机 - **车厢上**:以车厢为中心 + 跟随车厢旋转(世界旋转使车厢朝屏幕上方) - **小车上**:以玩家为中心(无旋转) - 缩放:`0.7x` 放大视野 ### 手雷系统 - 越野车每 8-12 秒向玩家所在车厢投掷手雷 - **3 秒预警**:落点脉冲红色圆圈 + 飞行抛物线弧 - 落点实时追踪车厢位置(火车移动时不会落空) - 爆炸:50px 范围、25 伤害(玩家)、60px 范围、20 伤害(敌人) ### 编辑器 按 ESC → 编辑地图,可拖拽轨道控制点、右键平移、滚轮缩放、Ctrl+Z 撤销 ## 技术说明 - **引擎**:LOVE2D 11.5 - **分辨率**:1920×1080 - **物理**:Box2D(love.physics) - **轨道**:Catmull-Rom 样条 + 弧长参数化 - **字体**:msyh.ttc(微软雅黑) - **模块结构**: - `main.lua` — 入口,事件转发 - `conf.lua` — 配置 - `src/game.lua` — 游戏主逻辑 + 集中式相机变换 - `src/train.lua` — 火车(车厢) - `src/track.lua` — 轨道样条 - `src/player.lua` — 玩家(物理体、跳跃、标记系统) - `src/enemy_manager.lua` — 两种敌人(Car/Motorcycle) - `src/bullet_manager.lua` — 子弹管理 - `src/effect_manager.lua` — 粒子特效 - `src/camera.lua` — 相机跟踪 - `src/minimap.lua` — 小地图(三态切换) - `src/map_editor.lua` — 地图编辑器 - `src/menu.lua` — ESC 菜单 - `src/scenery.lua` — 景物散布 ## 启动 ```bash start.bat ```