AndEngine:两个精灵的碰撞

4
我正在开发一款小型Android游戏。在开始使用AndEngine之前,我使用Canvas对象并在其上绘制所有内容。为了测试两个位图是否相互碰撞,我检查它们的边界框是否重叠。如果是这种情况,我则检查两个位图的重叠矩形是否有一个非透明像素点相交。
这种方法效果很好,我能够检测到完美的像素碰撞。
由于性能问题,我开始使用AndEngine。碰撞检测效果很好,但是两个精灵之间的碰撞测试肯定不是像素完美的。碰撞测试只是“简单地”进行边界框测试。
2个回答

5

这些库使用了旧版本的And Engine。 - Ahmad Joyia

1
以下代码实现了两个动画精灵的碰撞,而且不需要使用pixelPerfect类,在AndEngine中运行良好。它可能会对你有所帮助。
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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接