NavigationSystem 导航系统演示
这是一个展示 NavigationSystem 可插拔导航架构 的交互式演示,涵盖多种寻路算法和避让场景。
点击 Run 启动模拟,使用工具栏按钮切换不同配置:
场景说明:
| 场景 | 寻路算法 | 特点 |
|---|---|---|
| NavMesh | NavMesh | 多边形导航网格,适合复杂地形 |
| A* | A* 网格寻路 | 经典网格寻路,搜索完整 |
| JPS | 跳点搜索 | 优化的网格寻路,减少节点扩展 |
| Circle | 无路径规划 | 纯 ORCA 避让,经典圆形交换测试 |
| Funnel | A* | 漏斗通道,测试窄道通行 |
| Stress | 无路径规划 | 大量代理压力测试 |
交互操作:
- 左键点击 设置所有代理的目标位置
- 右键点击 在点击位置添加新代理
运行时算法切换
Section titled “运行时算法切换”// 切换寻路算法navSystem.setPathPlanner(createNavMeshPathPlanner(navMesh));navSystem.setPathPlanner(createAStarPlanner(gridMap, undefined, { cellSize: 20 }));navSystem.setPathPlanner(createJPSPlanner(gridMap, undefined, { cellSize: 20 }));
// 切换避让算法navSystem.setLocalAvoidance(createORCAAvoidance());navSystem.setLocalAvoidance(null); // 禁用| 接口 | 职责 | 实现 |
|---|---|---|
IPathPlanner | 全局路径规划 | NavMesh, A*, JPS, HPA* |
ILocalAvoidance | 局部避让 | ORCA |
ICollisionResolver | 碰撞解决 | CollisionResolver |
静态/动态障碍物分离
Section titled “静态/动态障碍物分离”// 静态障碍物:路径规划绑开,CollisionResolver 防穿墙navSystem.addStaticObstacle({ vertices: [...] });
// 动态障碍物:ORCA 实时避让navSystem.addDynamicObstacle({ vertices: [...] });- NavigationSystem 文档 - 完整 API 参考
- ORCA 局部避让 - 避让算法详解