Как сделать так, чтобы моя проверка столкновений с 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);
}