Как сделать так, чтобы моя проверка столкновений с Intersect между прямоугольниками работала?

РЕДАКТИРОВАТЬ: вот полный код: https://dl.dropboxusercontent.com/u/65678182/assignment1.rar Любая возможная помощь высоко ценится!


Я пытаюсь сделать копию этой игры, но у меня проблемы с проверкой, пересекаются ли два объекта (мяч и весло).

У меня есть этот метод для обнаружения столкновений на данный момент:

public static void handleCollisions()
    {

        System.out.println(ball.getBounds());        // just to check that they                  
        System.out.println(paddle.getBounds());      //are there and moving correct

        if (ball.getBounds().intersects(paddle.getBounds()))
            {
        System.out.println("collision");
            }
    }

Я почти уверен, что getBounds работает как надо, так как я получаю эти выходные данные из println: java.awt.Rectangle[x=393,y=788,width=14,height=14] java.awt.Rectangle[x=350, у = 350, ширина =100, высота =10]

getBounds code:
    public static Rectangle getBounds()
    {
        return new Rectangle(x, y, radius*2, radius*2);                     
    }

и я вижу, как они движутся в одной точке, они перекрываются, но метод никогда не обнаруживает это.

Я довольно новичок в этом, надеюсь, это просто какая-то глупая ошибка где-то, и любая помощь приветствуется. Я могу опубликовать больше кода при необходимости, но предпочел бы нет.

1 ответ

java.awt.Rectangle[x=393,y=788,width=14,height=14] 
java.awt.Rectangle[x=350,y=350,width=100,height=10]

Как вы можете видеть у второго прямоугольника у / высота 350/10, но у первого у =788

Очевидно, что они не имеют пересечения один над другим

ОБНОВЛЕНИЕ Еще одна вещь

public static Rectangle getBounds()
{
    return new Rectangle(x, y, radius*2, radius*2);                     
}

Если x и y - центр шара, код должен быть

public static Rectangle getBounds()
{
    return new Rectangle(x-radius, y-radius, radius*2, radius*2);                     
}
Другие вопросы по тегам