我有两个在屏幕上移动的正方形,两个正方形都来自同一个类(它是两次绘制的同一个正方形)。我已经弄清楚如何在它们之间进行碰撞检测,这不是问题。问题是方块可以相互通过,所以我认为我可以做到这一点,当方块相互碰撞时,它们会传送到它们碰撞之前所处的最新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);
}
}
}
答案 0 :(得分:0)
您可以将所有先前的x,y位置存储在列表中,并在发生碰撞时追溯一步或仅在临时变量中存储最后一个坐标。 但正如Duncan所说,我觉得你的新路径应该沿着与影响正交的轴反射