检测两个AnimatedSprite之间的像素完美碰撞?

时间:2014-02-24 09:20:38

标签: android andengine collision-detection

如何检测andengine中两个AnimatedSprite之间的碰撞?我尝试了AndEngineCollsionsExtension函数的collidesWith,但我检测到透明像素的碰撞。

这是我的代码:

private BitmapTextureAtlas mSpriteTexture; 
private PixelPerfectTiledTextureRegion mSpriteTextureRegion; 
private PixelPerfectAnimatedSprite sprite; 

private BitmapTextureAtlas mObstaculoBajo_TextureAtlas; 
private PixelPerfectTiledTextureRegion mObstaculoBajo_TextureRegion; 
private PixelPerfectAnimatedSprite mObstaculoBajo1; 

private CollisionLogger spriteCollisionLog;

spriteCollisionLog = new CollisionLogger("SpriteColl");

spriteCollisionLog.startCollisionCheck (); 
sprite.collidesWith collisionResult = boolean (mObstaculoBajo1); 
spriteCollisionLog.endCollisionCheck (collisionResult); 
if (collisionResult) 
{
 showToast ("Collision"); 
} 

1 个答案:

答案 0 :(得分:0)

最好的方法是检查两个精灵中心点之间的距离,如果它小于精灵的宽度忽略透明区域,那么你可以说它们正在碰撞。另一种方法,如果你使用不规则形状的精灵然后Subclass Sprite和覆盖colideswith属性并检查碰撞区域像素颜色......

此外还有像素完美的切割扩展游戏及其对于alpha proprty的保留

结帐  速度很快(在我的低端中兴刀片上很容易在60FPS下发生一些碰撞)     你设置alpha的阈值     它支持像素完美碰撞任何矩形形状(这意味着如果你有一个像完美的精灵星形和一个立方体作为普通精灵,当立方体不接触有效星形时,碰撞检查将返回false)     它有不同的调试工具(用于查看性能的记录器,用于查看实体掩码的实用程序方法,...)     它真的很容易使用:只使用PixelPerfectSprite和PixelPerfectAnimatedSprite而不是正常的

您可以在此处找到该扩展程序 https://github.com/MakersF/AndEngineCollisionsExtension