У меня есть два квадрата, которые перемещаются по экрану, оба квадрата относятся к одному классу (это тот же квадрат, который был нарисован два раза). Я уже понял, как сделать обнаружение столкновений между ними, так что это не проблема. Проблема в том, что квадраты могут проходить друг через друга, поэтому я думал, что могу сделать так, чтобы, когда квадраты попали друг в друга, они телепортировались в последние положения x и y, в которые они были включены, прежде чем они столкнулись. Я пробовал кое-что, но не работает. В моем потоке у меня есть этот код.Как получить последнее значение, которое имело целое число до того, как был выполнен метод.
for(int i = 0; i < rectangles.size(); i++){
Rectangle rect = (Rectangle) rectangles.get(i);
x = rect.getXPos();
y = rect.getYPos();
checkRectCollisionAndMovement();
for(int j = i + 1; j < rectangles.size(); j++){
Rectangle rect2 = (Rectangle) rectangles.get(j);
Rectangle r1 = rect.getBounds();
Rectangle r2 = rect2.getBounds();
if(r1.intersects(r2)){
rect.setXPos(x);
rect.setYPos(y);
}
}
}
Как бы сделать так, что он получает й и у позиции, прежде чем они colided, а не один, они были в то время как они были встречными?
Это метод checkCollisionAndMovement
public void checkRectCollisionAndMovement(){
for(int i = 0; i < rectangles.size(); i++){
Rectangle rect = (Rectangle) rectangles.get(i);
if(rect.getYPos() > 500){
rect.setYPos(rect.getYPos() - .1);
}
if(rect.getYPos() < 500){
rect.setYPos(rect.getYPos() + .1);
}
if(rect.getXPos() > 500){
rect.setXPos(rect.getXPos() - .1);
}
if(rect.getXPos() < 500){
rect.setXPos(rect.getXPos() + .1);
}
if(rect.isVisibe()){
rect.move();
}else{
rect.remove(i);
}
}
}
Пожалуйста, покажите свой метод 'checkRectCollisionAndMovement();' или сообщите нам, что он делает и как он это делает. –
Скопируйте их в другую переменную и назовите их как previousX и newX – AurA
yep, if! R1.intersects (r2), сохраните текущие x и y в списке или Map , и если они пересекаются, не устанавливайте новые вычисленные координаты, но читайте те, которые были сохранены в предыдущем запуске. –