3

我使用了以下网站的代码。

但我面临的问题是获取对象的坐标。

让我解释。根据代码。您只需要以 PNG 格式添加图形图像并将其引用到此处的类。我想要实现的是一个简单的碰撞检测机制。我添加了一个迷宫(如 PNG)。并有一个对象(如 PNG)通过迷宫中的空白路径。为了做到这一点,我需要知道我的对象将移动的坐标中的空格。

谁能告诉我如何将空格作为(x,y)坐标,我可以通过它获取我的对象?

4

1 回答 1

2

如果迷宫有一个入口和一个出口,或者迷宫周围有一个开放区域,其中包含多个入口或出口的目的地点,则A* 搜索算法将完成这项工作:

请注意,这可能最好在 CPU 上完成。您需要修改路径段的条件以处理对象大小,一个简单的方法只是假设路径宽度为 1 个图像像素。

如果您以这样一种方式修改算法,使其匹配多个目的地点,它可能会更顺畅地工作,而无需为出口提供一个开放区域(一个入口到多个出口)。对于多个起点或入口,修改可能会导致 N 次运行和路径比较以找到最短的一个(许多入口到许多出口),或者如果只存在一个出口(许多入口到一个出口),则进行反向搜索,例如一进多出。如果需要多个目标点的路径,只需继续搜索,直到找到所有目标点或算法“停滞”并停止。

更新:

最好和最灵活的方法可能是使用支持各种形状类型的物理库,如球体、任意凸包等。例如,您可以使用“子弹物理”库仅进行碰撞检测,无需物理模拟(但为什么不?)。2D 中基于片段的碰撞检测可以使用 OpenGL 遮挡查询来实现,这对于复杂的形状往往更快。

要集成图像,您需要将其转换/缩放以在定义其他形状的坐标空间中对多个墙壁对象进行排序。

简而言之:使用任意形状的顶点数据进行碰撞检测是非常昂贵的,开发和运行时。这就是子弹库的碰撞形状会有所帮助的地方,因为它们用于表示要绘制的对象的简化形状。

于 2012-12-16T17:09:43.530 回答