perf: 优化底图可走路径

This commit is contained in:
richarjiang
2025-10-20 09:22:47 +08:00
parent 93d5473c88
commit 8f4200a7a3
10 changed files with 688 additions and 116 deletions

View File

@@ -0,0 +1,108 @@
# 系统架构
## 整体架构
项目采用组件化架构,基于 Cocos Creator 3.8.7 的实体组件系统ECS设计。
## 核心模块
### 1. 寻路系统
- **TiledMapPathfinder** (`assets/scripts/TiledMapPathfinder.ts`)
- 瓦片地图寻路管理器
- 负责世界坐标与瓦片坐标转换
- 集成A*算法进行路径计算
- 提供路径平滑功能
- **AStarPathfinding** (`assets/scripts/AStarPathfinding.ts`)
- 纯A*算法实现
- 支持8方向移动
- 包含对角线移动的墙角检测
- 可配置的移动代价
### 2. 玩家控制系统
- **PlayerController** (`assets/scripts/PlayerController.ts`)
- 核心游戏逻辑控制器1455行
- 处理触摸输入和玩家移动
- 管理动画状态切换
- 实现战斗逻辑
- 处理道具收集和升级系统
- UI弹窗管理
### 3. 相机系统
- **CameraFollow** (`assets/scripts/CameraFollow.ts`)
- 平滑相机跟随
- 地图边界限制
- 可配置的跟随速度和偏移
- 支持初始焦点设置
### 4. 游戏管理
- **Manager** (`assets/scripts/Manager.ts`)
- 游戏初始化管理
- 组件间协调
- 地图信息管理
- **Start** (`assets/scripts/Start.ts`)
- 资源分包加载
- 场景跳转管理
### 5. 辅助组件
- **Shadow2D** (`assets/scripts/Shadow2D.ts`)
- 2D阴影效果渲染
- **PathfindingTest** (`assets/scripts/PathfindingTest.ts`)
- 寻路系统测试工具
## 数据流
```
用户触摸输入 → PlayerController → TiledMapPathfinder → AStarPathfinding
动画系统 → 相机跟随 → UI更新
碰撞检测 → 战斗逻辑 → 游戏状态更新
```
## 关键设计模式
### 1. 组件模式
- 利用Cocos Creator的组件系统实现模块化
- 每个功能独立封装为组件
### 2. 观察者模式
- 碰撞事件监听
- 动画完成事件处理
### 3. 状态模式
- 玩家动画状态管理
- 游戏状态控制
## 关键实现路径
### 寻路流程
1. 触摸输入转换世界坐标
2. 世界坐标转瓦片坐标
3. A*算法计算路径
4. 路径平滑处理
5. 瓦片坐标转世界坐标
6. 执行移动动画
### 战斗流程
1. 碰撞检测触发
2. 玩家对齐到攻击位置
3. 播放攻击动画
4. 比较生命值
5. 执行胜负逻辑
6. 更新游戏状态
### 升级流程
1. 击败特定怪物触发
2. 道具飞行动画
3. 播放升级特效
4. 切换动画资源
5. 更新玩家状态
## 性能考虑
- 寻路算法使用开放列表和关闭列表优化
- 动画切换避免重复播放
- 对象池管理(待实现)
- 资源分包加载减少初始加载时间