2011-09-12 3 views
4

작은 Android 게임을 개발 중입니다. AndEngine을 사용하기 전에 Canvas 객체를 사용하여 모든 것을 그렸습니다. 두 비트 맵이 서로 충돌하는지 테스트하기 위해 바운딩 박스가 겹치는 지 확인했습니다. 이 경우 두 비트 맵의 ​​겹치는 사각형에 공통된 투명 픽셀이 하나도 없는지 확인했습니다. 이 방법은 완벽하게 작동했으며 픽셀 완전 충돌을 감지 할 수있었습니다.AndEngine : 두 개의 스프라이트 충돌

성능 문제로 인해 AndEngine을 사용하기 시작했습니다. 충돌 탐지는 조용하게 작동하지만 두 개의 스프라이트에 대한 충돌 테스트는 픽셀 단위로 완벽하게 작동합니다. 충돌 테스트는 "그냥"경계 상자 테스트입니다.

답변

5

여기 pixelPerfect 클래스를 사용하지 않고 andEngine에 나를 위해 잘 작동이 개 애니메이션 스프라이트의 충돌에 대한 코드 아래

AndEngine - Pixel Perfect Detection

+0

이러한 라이브러리는 Engine의 구 버전을 사용합니다. –

1

, 완벽한 픽셀 감지의 좋은 예입니다. 그것은 당신을 도울 수 있습니다.

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