Android 两个精灵的碰撞

Android 两个精灵的碰撞,android,opengl-es,andengine,Android,Opengl Es,Andengine,我正在开发一个小的Android游戏。在开始使用AndEngine之前,我使用Canvas对象并在其上绘制所有内容。为了测试两个位图是否相互冲突,我检查了它们的边界框是否重叠。在这种情况下,我检查了两个位图的重叠矩形是否共有一个非透明像素。 这种方法非常有效,我能够检测到像素完美的碰撞 由于一些性能问题,我开始使用AndEngine。碰撞检测工作得很好,但是两个精灵的碰撞测试工作得非常完美。碰撞测试“只是”一个边界框测试 这是一个完美像素检测的好例子 下面是两个动画精灵碰撞的代码,在andEng

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


由于一些性能问题,我开始使用AndEngine。碰撞检测工作得很好,但是两个精灵的碰撞测试工作得非常完美。碰撞测试“只是”一个边界框测试

这是一个完美像素检测的好例子


下面是两个动画精灵碰撞的代码,在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;
}
public boolean isCollides(AnimatedSprite animSprite1,AnimatedSprite animSprite2)引发异常{
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)){
返回true;
}否则
返回false;
}

这些库用于旧版本的和引擎