画面上を移動する 2 つの正方形があります。両方の正方形は同じクラスのものです (2 回描画された同じ正方形です)。それらの間の衝突検出を行う方法はすでにわかっているので、問題はありません。問題は、正方形が互いに通り抜けることができることです。正方形が互いに衝突すると、衝突する前にあった最新の 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);
}
}
}
衝突したときの位置ではなく、衝突する前の x と y の位置を取得するにはどうすればよいでしょうか?
これは 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);
}
}
}