AndEngine:两个精灵的碰撞

时间:2011-09-12 10:13:02

标签: android opengl-es andengine

我正在开发一款小型Android游戏。在我开始使用AndEngine之前,我使用了Canvas对象并在其上绘制了所有内容。为了测试两个位图是否相互碰撞,我检查了它们的边界框是否重叠。在这种情况下,我检查了两个位图的重叠矩形是否共有一个非透明像素。 这种方法完美地工作,我能够检测像素完美碰撞。

由于一些性能问题,我开始使用AndEngine。碰撞检测工作安静,但两个精灵的碰撞测试肯定是完美的像素工作。碰撞测试“只是”一个边界框测试。

2 个答案:

答案 0 :(得分:5)

以下是像素完美检测的一个很好的例子,

AndEngine - Pixel Perfect Detection

答案 1 :(得分:1)

下面代码中两个动画精灵的碰撞在我的andEngine中运行良好,而不使用pixelPerfect类。这对你有帮助。

public boolean isCollides(AnimatedSprite animSprite1 ,AnimatedSprite animSprite2) throws Exception{


float diffX = Math.abs( (animSprite1.getX() +  animSprite1.getWidth()/2 )- 
             (animSprite2.getX() + animSprite2.getWidth()/2 ));
float diffY = Math.abs( (animSprite1.getY() +  animSprite1.getHeight()/2 )- 
             (animSprite2.getY() + animSprite2.getHeight()/2 ));

if(diffX < (animSprite1.getWidth()/2 + animSprite2.getWidth()/3) 
           && diffY < (animSprite1.getHeight()/2 + animSprite2.getHeight()/3)){

   return true;
}else
  return false;
}