2011-09-12 5 views
4

Je développe un petit jeu Android. Avant de commencer à utiliser AndEngine, j'ai utilisé l'objet Canvas et j'ai dessiné tout ce qui s'y trouvait. Pour tester si deux bitmaps entrent en collision les uns avec les autres, j'ai vérifié si leurs boîtes englobantes se chevauchent. Dans ce cas, j'ai vérifié si le rectangle de chevauchement des deux bitmaps avait un seul pixel transparent en commun. Cette méthode a fonctionné de manière parfaite et j'ai pu détecter des collisions parfaites au pixel près. En raison de problèmes de performances, j'ai commencé à utiliser AndEngine. La détection de collision fonctionne bien mais les tests de collision pour deux sprites fonctionnent parfaitement. Les tests de collision sont "juste" un test de boîte englobante.AndEngine: collision de deux sprites

Répondre

1

Ci-dessous le code de collision de deux sprites animés fonctionne bien pour moi dans AndEngine sans utiliser la classe PixelPerfect. Cela peut vous aider.

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