OPENGL Android获取我的图像坐标

3
我使用了以下网站上的代码:http://www.ionage.co.uk/ia/opengl-spritebatcher-v1-0/
但我遇到的问题是如何获取我的对象的坐标。
让我解释一下。根据代码,你只需要添加PNG格式的图形图像,并在这里引用它的类。我想要实现一个简单的碰撞检测机制。我已经添加了一个迷宫(作为PNG文件),并有一个对象(作为PNG文件)通过迷宫中的空白路径。为了做到这一点,我需要知道对象将移动的坐标中的空白空间。请问如何获取这些空白空间的(x,y)坐标以便我可以带着我的对象走?
1个回答

2
如果迷宫只有一个入口和一个出口,或者在迷宫周围有一个开放区域包含多个入口或出口的目的地点,那么A搜索算法*可以胜任此工作:

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

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

更新:

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

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

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


我目前不需要AI算法。我只需要找到我的迷宫的像素数据。简单的if-else条件将帮助我检测碰撞。但是对于所有内容,我都需要像素信息。不管怎样,还是谢谢。 - Debopam Mitra
你想在坐标空间之间进行转换吗?比如将迷宫的世界空间映射到图像空间? - Sam
好的,让我清楚地说明我的意图。在OpenGL es中添加形状时,我们通常将顶点作为浮点数组添加,例如{1.0f,0.0f...等等},如果我错了,请纠正我。你能告诉我如何检测以这种浮点数列方式定义/绘制的两个形状之间的碰撞吗? - Debopam Mitra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接