java - Android Rect.intersect() 不工作/没有被使用,对吧?

标签 java android

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

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

我已经画出了矩形,它覆盖了整个盒子,但碰撞时似乎并不总是响应。还画出了球的矩形,它就在它应该在的地方。有时它会在盒子的左侧起作用,但会穿过其余部分。 我也可能会遇到非垂直碰撞,所以如果有人知道如何做到这一点,请告诉我。

最佳答案

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

关于java - Android Rect.intersect() 不工作/没有被使用,对吧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16454022/

相关文章:

android - 让 Android 应用程序崩溃的最佳方法是什么?

android - 谷歌登录不工作

java - 函数中重新赋值后全局变量赋值保持不变(Android Studio)

java - 如何在 Java 中构造像 new String ('A' , 30) 这样的字符串

java - Android 应用程序在 getString() 行崩溃

java - 递归 - 它做了什么

java - Java 11 中的内部 API 替换

android - 如何为不同的密度指定不同的布局尺寸

android - 在 Android 上获取 Wifi 接口(interface)名称

android - Android 中 .9.png 按钮中的锯齿!