我有一个游戏 Angular 色,正在屏幕上制作动画。 由于非常具体的原因,该 Angular 色必须位于 DIV( Canvas 外)内。
我正在 Canvas 上绘制黑白图像并循环像素数据来定义 Angular 色的可步行区域。效果很好。
现在需要设置寻路。 我读过大量有关使用 A* 算法的文章,当您在游戏循环内移动 Angular 色时,它似乎非常有意义。
那么,当我的 Angular 色(DIV)没有在 Canvas 循环中绘制时,我如何才能将路径移动信息传递给我的 Angular 色(DIV)? 这可能吗,或者有任何已知的解决方法吗?
谢谢!
最佳答案
所以,你的假设似乎是你必须移动你的 Angular 色才能完成 A* 算法。您不必移动您的实际 Angular 色。基本上,您创建 Angular 色和棋盘的“模拟”并移动它。
1-
用代码创建您的步行区域的表示。听起来你几乎已经完成了这一点,但不是显示它,而是将它存储在数组或其他东西中;某种对你有意义的方式(二维数组?)。
2-
在代码中运行 A* 算法,而不是绘制和移动实际 Angular 色。这里的想法是在你的 Angular 色开始移动之前解决问题并了解寻路解决方案。有几种方法可以做到这一点,具体取决于 A* 的实现方式,但在它运行之后,您希望生成您想要采取的路径的表示(从 (0,0) 开始,转到 (0,1 ),转到(1,1)等)。
3-
将该路径信息传递给您的 Angular 色。现在它已经有了一个关于如何在开始之前到达终点的分步计划。
关于javascript - A* 在 Canvas 上寻路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31685700/