MAKE · WRITE · SHARE

Unity-开源项目-A*算法可视化

学 A* 那阵子,光看书上写 open list、close list,看完还是一头雾水,索性自己用 Unity 写了个 Demo,一边写一边看算法到底是怎么找路的。做完发现这东西用来演示再合适不过——地图上随机生成一堆墙,点个地方,角色就自己绕开障碍走过去了,路径还给你用绿色标出来。

AStarFindPath 寻路演示

它能做什么

打开就是一张网格地图,每次运行随机撒一些黑色的墙。鼠标点哪,角色就往哪走,中途自动绕开墙壁:

  • 墙是随机生成的,每次打开布局都不一样;
  • 找到的最短路径直接用绿色画在地图上,算法绕了哪几步一目了然;
  • 对当前布局不满意,随时重置地图重新来。

我印象最深的就是看它绕路的瞬间:有时候人眼觉得直着走明明更快,它偏偏往旁边绕一格,仔细一看才发现前面其实是堵死的。这种「原来算法是这么想的」的时刻,比对着书背公式有意思多了。

总结

AStarFindPath 是我当年学 A* 时顺手做的演示项目,没什么花活,就是把网格地图、随机障碍、寻路、路径可视化这一套跑通了。感兴趣的可以去 GitHub 仓库 看看动图和源码。