【问题标题】:c# algorithm to find nearest tile with specific typec#算法查找具有特定类型的最近瓦片
【发布时间】:2016-05-12 04:04:43
【问题描述】:

对不起标题,但我不知道如何用一句话描述我的问题。

所以基本上我正在尝试创建一些东西来制作随机地牢。我在二维网格上的随机位置制作房间,并为每个房间添加门。然后我得到第一扇门并尝试找到最近的另一扇门,但我找不到一个好的算法,我尝试了 a* 的修改版本,还查看了洪水填充,但这不是我需要的。我在想第一扇门周围有某种螺旋形,然后检查我们经过的每一块瓷砖,看看它是否是一扇门。如果有帮助的话,我有一个关卡中所有门的列表,但有很多,所以我认为检查每个门的距离不是一个好主意。

有人知道这方面是否有好的算法吗?

【问题讨论】:

  • 如果你找到距离的平方 (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) 而不是距离 sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) 将不会使用平方根来找到这个距离,并且会比检查很多瓷砖(的当然,这取决于要检查的瓷砖数量和要检查的门数)。

标签: c# algorithm grid-layout


【解决方案1】:

如果游戏将其对象存储在 quadtree 中,则可以在场景中按接近度优先搜索现有项目。可以搜索特定类型的对象,而不是搜索碰撞。这可以通过 C# 中的is operator 来完成。这个问题可能更适合Game Development Stack Exchange

【讨论】:

    【解决方案2】:

    所以你需要找到最近的具有特定属性的图节点?

    BFS(广度优先搜索)是你的朋友。

    【讨论】:

      猜你喜欢
      • 2014-04-02
      • 2012-05-26
      • 2022-01-15
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多