我试图实现基本的碰撞,似乎无法弄清楚如何使其工作。到目前为止,我有一个Ball
对象,它具有android Rect
范围,并试图测试它是否与盒子碰撞。 我到目前为止这样的代码:Android的Rect.intersect()不工作/不正确的使用?
public void collides(Ball ball) {
// if(ball.getX() > getX() - ball.getSize() && ball.getX() < getX() + getWidth() && ball.getY() > getY() && ball.getY() - ball.getSize() < getY() + getHeight()) {
//System.out.println("we got a hit");
if(Rect.intersects(ball.getBounds(),new Rect(getX(), getY(), getX() + getWidth(), getY()-3))) { //bottom
System.out.println("bottom");
ball.setYvel(0);
ball.setXvel(0);
//ball.setYvel(ball.getYvel() * -1);
}
if(Rect.intersects(ball.getBounds(), new Rect(getX(), getY()+getHeight(), getX()+getWidth(), getY()+getHeight()+3))) { //top
System.out.println("top");
ball.setYvel(0);
ball.setXvel(0);
//ball.setYvel(ball.getYvel() * -1);
}
if(Rect.intersects(ball.getBounds(), new Rect(getX(), getY(), getX()+3, getY()+getHeight()))) { //left
System.out.println("left");
ball.setXvel(0);
ball.setYvel(0);
//ball.setXvel(ball.getXvel() * -1);
}
if(Rect.intersects(ball.getBounds(), new Rect(getX()+getWidth(), getY(), getX()+getWidth()-3, getY()+getHeight()))) { //right
System.out.println("right");
ball.setXvel(0);
ball.setYvel(0);
//ball.setXvel(ball.getXvel() * -1);
}
}
我画出来的矩形,并覆盖整个框,但似乎并没有发生碰撞时,总是响应。也涂上了球的矩形,它应该是它的位置。它有时适用于盒子的左侧,但通过其余部分。 我也可能会进入非垂直的碰撞,所以如果有人知道如何做到这一点,让我知道。
我试过了,不适合更新了代码片段,但它似乎没有帮助 – M4trixSh4d0w 2013-05-09 04:20:05
修复了它(还有七个要去) – M4trixSh4d0w 2013-05-09 04:41:25
好你让我想知道。 – 2013-05-09 04:43:49