2011-09-18 88 views
0

由于一些内存问题,我必须textureBitmap.recycle()创建OpenGL纹理后的所有纹理位图。效果很好,剩下足够的内存。Android OpenGL:没有位图数据的像素完美碰撞

我的问题是,我完全不知道如何实现碰撞检测。 我不想只是boundingbox测试 - 这很容易 - 我想像素完美的碰撞检测。我不使用任何引擎,所以我不能使用现有的库。 在没有引擎的情况下工作之前,我使用了AndEngine的扩展,它使像素完美!

你能不能给我一个提示,如何实现碰撞检测?

+0

你在2D或3D的工作?还有在http://sacredsoftware.net/tutorials/Collisions/CollisionsPart1.html可能让你开始是一个相当不错的文章... –

+0

2D ...... 13多了去了... –

+0

你在做只是使用OpenGL的2D游戏?这里的“像素碰撞”是有意义的。在3D中它没有敏感。 另外,你的意思是什么样的碰撞?反对polygone?两个多边形相互对立? –

回答

2

我的andengine所作的pixel perfect collision library包括PixelPerfectBitmask,将自身的工作。

PixelPerfectBitmask mask1 = new PixelPerfectBitmask(bmp1, 100, 100); 
PixelPerfectBitmask mask2 = new PixelPerfectBitmask(bmp2, 100, 100); 
Log.v("pp collision", String.valueOf(mask1.collidesWith(mask2, 20, 10))); 

如果您有任何疑问,请告诉我!

+0

当我旋转一个精灵90度时,如何检测碰撞?我怎样才能旋转位掩码呢? –

+0

位掩码只能在一个方向上工作。您需要旋转位图并重新生成位掩码。或者,您可以使用rotate()方法扩展位掩码,但这需要一些思考。如果你走这条路,不介意分享,一定要让我知道! – ABentSpoon

+0

旋转时位图剂量已经存在了。我有旋转,这将是埋头苦干实行位掩码:) –