我使用了以下website中的代码。
但我面临的问题是获取对象的坐标。
让我解释一下。根据代码。您只需要以PNG格式添加图形图像并将其引用到此处的课程中。我想要实现的是一种简单的碰撞检测机制。我添加了一个迷宫(作为PNG)。并有一个对象(作为PNG)通过迷宫内的空白路径。为了做到这一点,我需要知道我的对象将通过其移动的坐标内的空白区域。
任何人都可以告诉我如何将空格作为(x,y)坐标来获取我的物体吗?
答案 0 :(得分:2)
如果迷宫有一个入口和一个出口,或迷宫周围的开放区域包含多个入口或出口的目标点,A* search algorithm将完成这项工作:
请注意,这可能最好在CPU上完成。您需要修改路径段的条件来处理对象大小,一个简单的方法就是假设路径宽度为1个图像像素。
如果你以这种方式修改算法,它匹配多个目标点,它可能会更平滑,不需要一个开放区域退出(一个入口到多个出口)。对于多个起始点或条目,修改可能导致N次运行和路径比较以找到最短的一个(许多出口到多个出口),或者如果只存在一个出口(多个条目到一个出口)则反向搜索,例如许多出口的一个入口。如果需要多个目标点的路径,只需继续搜索,直到找到所有目标点或算法“停止”并停止。
更新:
最好和最灵活的方式可能是使用支持各种形状类型的物理库,如球体,任意凸壳等。例如,您可以使用'子弹物理'库仅进行碰撞检测,无需物理模拟(但为什么不呢?)。使用OpenGL遮挡查询可以实现2D中基于碎片的碰撞检测,对于复杂的形状,查询速度往往更快。
要整合图像,您需要将其转换/缩放为在定义其他形状的坐标空间中对多个墙对象进行排序。
简而言之:使用任意形状的顶点数据进行碰撞检测非常昂贵,无论是开发还是在运行时。这是子弹库的碰撞形状有用的地方,因为它们用于表示要绘制的对象的简化形状。