Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Rect.intersect()不工作/未被使用,对吗?_Java_Android - Fatal编程技术网

Java Android Rect.intersect()不工作/未被使用,对吗?

Java Android Rect.intersect()不工作/未被使用,对吗?,java,android,Java,Android,我试图实现基本的碰撞,但似乎不知道如何使其工作。到目前为止,我有一个Ball对象,它有一个androidRect边界,并试图测试它是否与一个盒子碰撞。 到目前为止,我有以下代码: public void collides(Ball ball) { // if(ball.getX() > getX() - ball.getSize() && ball.getX() < getX() + getWidth() && ball.getY() > g

我试图实现基本的碰撞,但似乎不知道如何使其工作。到目前为止,我有一个
Ball
对象,它有一个android
Rect
边界,并试图测试它是否与一个盒子碰撞。 到目前为止,我有以下代码:

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);
            }
}
公共空间碰撞(球){
//如果(ball.getX()>getX()-ball.getSize()&&ball.getX()getY()&&ball.getY()-ball.getSize()
我画出了长方形,它覆盖了整个盒子,但在碰撞时似乎并不总是有反应。也画出了球的长方形,它就是它应该在的地方。它有时在盒子的左侧起作用,但会穿过其余部分。
我也可能会遇到非垂直碰撞,所以如果有人知道怎么做,请告诉我。

intersect()
将球的边界矩形设置为相交矩形。因此球的边界矩形变小了。您应该改用
intersects()

intersect()
将球的边界矩形设置为相交矩形。因此球的边界矩形越来越小。您应该使用
intersects()
相反。

修复了它。我忘了更新ball类中的边界。我不敢相信我花了5个小时试图修复这个问题,这只是一小行代码。

修复了它。我忘了更新ball类中的边界。我不敢相信我花了5个小时试图修复这个问题,这只是一小行代码。

我尝试了,我会更新代码段,但似乎没有帮助修复它(还有七个)我尝试过,我会更新代码段,但似乎没有帮助修复它(还有七个)这就是为什么我们使用调试器:D这就是为什么我们使用调试器:D