2011-09-12 148 views
4

我正在開發一個小型的Android遊戲。在開始使用AndEngine之前,我使用了Canvas對象並在其上繪製所有內容。爲了測試兩個位圖是否相互碰撞,我檢查了它們的邊界框是否重疊。在這種情況下,我檢查了兩個位圖的重疊矩形是否有共同的一個非透明像素。 這種方法完美地工作,我能夠檢測像素完美的碰撞。AndEngine:兩個精靈的碰撞

由於一些性能問題,我開始使用AndEngine。碰撞檢測工作安靜,但兩個精靈的碰撞測試明確劑量工作像素完美。碰撞測試僅僅是一個邊界框測試。

回答

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; 
}