我有一个子弹和怪物游戏,我需要在使用矩形碰撞时释放子弹和怪物但是当发生碰撞时方法没有返回真实
这是我做的: 我为每个子弹/怪物设置界限
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);
我有这两个界限然后我在游戏线上打电话给他们
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++;
}
我有每个边界的日志,并且它们都是正确的左边< = right top< = bottom 但是在iscolliding方法中没有日志。我尝试了instersects(左,上,右,下)但仍然相同。
答案 0 :(得分:1)
这是我的直接碰撞检查方法(假设两个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;
它对我有用,所以看看它是否适合你
答案 1 :(得分:0)
我通过更改:
解决了这个问题return bounds.intersect
到
bounds.contains(r)
就是这样.~