【问题标题】:How to quickly check IF any path exists between grid points?如何快速检查网格点之间是否存在任何路径?
【发布时间】:2015-01-05 19:22:08
【问题描述】:

我在我的游戏中使用 A-star 算法,如果不存在路径,它会开始检查太多节点(网格很大),所以,正如我所见,我需要先检查是否存在任何路径。不查找实际路径,只需检查它是否存在。我能想出的唯一算法是递归地填充一个布尔矩阵。应该有更好的方法吧?

可选问题:如果目标单元格不存在路径,我如何找到可访问(路径确实存在)且最接近原始目标的单元格?

【问题讨论】:

    标签: c# unity3d a-star


    【解决方案1】:

    A* 正是这样做的……所以没有明显更好的方法(文章链接可以在http://en.wikipedia.org/wiki/Shortest_path_problem 中找到)

    如果您可以进行预处理,您可以为所有点着色,以便可以达到的对的颜色相同。如果颜色不同,则比没有路径时获得 2 分。

    要找到闭合点,您可以测量具有相同颜色的点的半径,然后开始寻找与该半径一样接近的路径。

    【讨论】:

    • 所以它基本上归结为,正如我所说,递归地填充字段?
    • @Irdes - 是的 - 做一次(如果有很多不相交的区域,你也可以更好地剔除边缘)......想想吧 - 检查是否有你需要检查的路径无论如何,所有点。有多种方法可以不同地表示此类数据。也可以考虑在gamedev.stackexchange.com 上提问,因为您可能会得到更有针对性的答案。
    猜你喜欢
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    相关资源
    最近更新 更多