2017-02-13 65 views
0

我想通过从纹理中切割透明区域来创建多边形。 我写了一个程序来检测2个对象之间的碰撞。 但碰撞在碰撞之前被检测到。 这是它的外观:http://imgur.com/a/dFmXI如何在纹理上创建多边形libGDX

这是代码:https://hastebin.com/bebusadiku.java 我以为切纹理和创建基于板缺质感多边形,然后使用部门间方法检测到冲突,但我不知道如何指定多边形的顶点。

我试图按照这一点,但没有解释如何检测顶点: https://gamedev.stackexchange.com/questions/114228/how-to-detect-collision-only-in-non-transparent-texture

感谢您的帮助

回答

0

我以前this polygonal shape editor来检查碰撞创建更复杂的形状。我相信在Box2D中,它不适用于“盒子”,但Box2D占用大量空间,如果不使用实际的物理学,这是不必要的。但是,此工具会生成JSON格式化的多边形坐标,并不难将其反序列化为Polygon对象,并与Intersector implementation发生冲突。所以在步骤中你:

  • 使用shape editor tool创建图像的形状。
  • 使用该工具将其导出到JSON。
  • 将数据反序列化为LibGDX Polygon
  • 移动,缩放并将其正确添加到图像中,使其同步。
  • 首先检查基本矩形与矩形的碰撞。
  • 如果存在基本碰撞,请使用Intersector进行更详细的碰撞检测。

该工具导出大量冗余数据,如果您熟悉导出的格式,可以除掉多边形/顶点数据以外的所有数据。

+0

我认为要做到这一点,但我想创建一个通用类,它在构造函数中剪切图像,所以我需要一个算法或一个用于物理身体编辑器的脚本。但脚本的问题是当我在Android上移植我的游戏时,它不起作用。我有一个想法是逐像素地裁剪图像,但是我的实现可能效率很低并且滞后于我的游戏。但我不知道Texture类是否具有识别像素颜色并允许在像素上操作的方法。如果它有效,我可以尝试在纹理上找到极端点并根据这些点创建一个多边形。 –

+0

是的,为纹理创建一个像素图。沿边缘做一些Bressingham视线技术来找到你的顶点。然后从它创建一个delaunai三角形,最终只有凹多边形。 – Madmenyo

+0

对不起,我的英语,但是什么意思Bressingham线和delaunai?顺便说一句,有没有任何算法可以帮助我或我必须实现从零的一切? –