2012-08-02 4 views
0

내 게임에서 나는 ImageView의 사각형이 화면 상단에서 떨어졌습니다. 하단에는 가속도계로 이동할 수있는 또 다른 ImageView이 있습니다.ImageView 충돌

이제 위로부터 떨어지는 ImageView의 것인지 확인하고 싶습니다. 하단의 ImageView과의 충돌이 있습니다. 어떻게해야합니까?

+0

표면 뷰에 비트 맵을 그려서 더 좋은 생각을하지 않습니까? 그러면 충돌 감지가 쉽습니다. –

+0

sry 나는 그것에 대해 아무것도 몰라. 당신이 나를 위해 튜토리얼과 링크를 보내 주시겠습니까? – Stupe

+0

다음은 하나입니다. http://www.droidnova.com/playing-with-graphics-in-android-part-ii160.html하지만 Google의 'android surfaceview tutorial'뿐 아니라 백만 명이 될 것입니다. Youtube 비디오 too –

답변

0

나는 충돌을 얻을 수 있는지 잘 모르겠지만 getMeasuredWidth() 및 Height()를 사용하여 사각형 경계 상자를 결정할 수 있습니다. 두 사각형의 가장자리 중 어느 것이 바운드 박스에 있는지 확인하십시오.

if((square1.x > square2.x && square1.x < square2.x+square2.width) && (square1.y > square2.y && square1.y < square2.y+square2.height)) 
//collision happened 
+0

sry하지만 안드로이드에 대한이 무엇입니까? 왜냐하면'x'와'y'는 존재하지 않기 때문입니다 ... – Stupe

0

보십시오. 이 함수는 2 개의 ImageView 간의 충돌을 감지합니다.

public boolean collision(ImageView a, ImageView b){ 
    float bl = a.getY(); 
    float bt = a.getX(); 
    float br = a.getWidth() + bl; 
    float bb = a.getHeight() + bt; 
    float pl = b.getY(); 
    float pt = b.getX(); 
    float pr = b.getWidth() + pl; 
    float pb = b.getHeight() + pt; 
    if (bl <= pr && bl >= pl && bt >= pt && bt <= pb) { 
     return true; 

    } else if (br >= pl && br <= pr && bb >= pt && bb <= pb) { 
     return true; 
    } else if (bt <= pb && bt >= pt && br >= pl && br <= pr) { 
     return true; 
    } else if (bb >= pt && bb <= pb && bl >= pl && bl <= pr) { 
     return true; 
    } 
    return false; 
}