2013-07-28 195 views
-1

我有子彈和怪物遊戲,其中我需要時,他們使用矩形相撞然而,當發生碰撞的方法沒有返回,釋放子彈和怪物真矩形碰撞檢測工作不

這裏是我做過什麼: 我設置邊界爲每個子彈/怪物

bounds.left = (int)X; 
bounds.top = (int)Y ; 
bounds.right = (int)X + monsterWidth; 
bounds.bottom = (int)Y + monsterHeight; 

然後由布爾方法

return bounds.intersect((int)X,(int) Y ,(int) X + monsterWidth, (int) Y + monsterHeight); 

我有此BOU NDS兩個,然後我打電話給他們的gamethread

int i=0, j=0; 
     while (!monster.isEmpty() && monster.size()>i){ 
      j=0; 
      while (!bullets.isEmpty() && bullets.size()>j){ 
       if(monster.get(i).isColliding(bullets.get(j).getBounds())){ 
        Log.v("collided", "Collided!"); 
        monster.get(i).setRelease(true); 
        bullets.get(j).setRelease(true); 
       } 
       j++; 
      } 
      i++; 
     } 

我對每對邊界和他們兩人的日誌是正確的左< =右上< =底部但是在iscolliding方法 沒有日誌。我試過了(左,上,右,下)但仍然一樣。

+0

它應該是軸對齊(不旋轉)直接進行碰撞檢查? – Bisder

+0

是的,它是軸對齊相交只用於旋轉矩形? – NoobMe

+0

我不確定,因爲我從來沒有使用它,我只是做了我自己的相交檢查方法,我在下面向你展示。檢查出 – Bisder

回答

1

這是我的rect到RECT碰撞檢查方法(假設兩個rects對準軸)

where x1 is x start 
where x2 is x1 + rect width 
where y1 is y start 
where y2 is y1 + rect height 

_x1,_x2,_y1,_y2使用相同的公式,但表示第二矩形。

bool boolResult = false; 

    if (x2 >= _x1 && x1 <= _x2 && y2 >= _y1 && y1 <= _y2) 
    { 
     boolResult = true; 
    } 

return boolResult; 

它爲我工作,所以看它是否可以通過改變制定出你

+0

好吧,我會試試這個謝謝 – NoobMe

0

我已經解決了這一點:

return bounds.intersect 

bounds.contains(r) 

完蛋了。 〜