-1

我有一个带有子弹和怪物的游戏,其中我需要在使用矩形碰撞时释放子弹和怪物但是当发生碰撞时,该方法不会返回 true

这就是我所做的:我为每个子弹/怪物设置了界限

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

我在每个边界上都有日志,它们都是正确的 left<=right top<=bottom 但是在 iscolliding 方法中没有日志。我已经尝试过 instersects(left,top,right,bottom) 但还是一样。

4

2 回答 2

1

这是我的矩形到矩形碰撞检查方法(假设两个矩形都是轴对齐的)

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;

它对我有用,所以看看它是否对你有用

于 2013-07-28T11:40:07.737 回答
0

我已经通过更改解决了这个问题:

return bounds.intersect

bounds.contains(r)

就是这样。~

于 2013-07-30T03:29:46.080 回答