Hi,
How to make Rectangle not moving after collision?
Look at this GIF:
I don't know how to fix it, my checkCollision() and move():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| @Override public void keyPressed(KeyEvent k) { int z = k.getKeyCode(); switch (z) { case KeyEvent.VK_LEFT: left = true; game.physic.leftVel = 2; break; case KeyEvent.VK_RIGHT: right = true; game.physic.rightVel = 2; break; case KeyEvent.VK_SPACE:
break;
default: break; }
}
public void move() { if (left) { switch (game.currentLevel()) { case 1: for (int i = 0; i < game.lvl1.getX().length; i++) game.lvl1.getX()[i] += game.physic.leftVel; break;
} } else if (right) { switch (game.currentLevel()) { case 1: for (int i = 0; i < game.lvl1.getX().length; i++) game.lvl1.getX()[i] -= game.physic.rightVel; break; } } }
public void checkCollision() { switch (game.currentLevel()) { case 1: for (int i = 0; i < game.lvl1.getX().length; i++) { if (game.man.getBounds().intersects(game.lvl1.getBounds(i))) { if (game.man.getBounds().getY() < game.lvl1.getBounds(i) .getY() && !game.man.isOnGround) { System.out.println("works^"); break; } else if (game.man.getBounds().getY() > game.lvl1 .getBounds(i).getY() && isJumping) { System.out.println("worksV"); break; } else if (game.man.getBounds().getX() < game.lvl1 .getBounds(i).getX() && right) { right = false; game.physic.rightVel = 0; System.out.println("works<"); break; } else if (game.man.getBounds().getX() > game.lvl1 .getBounds(i).getX() && left) { left = false; game.physic.leftVel = 0; System.out.println("works>"); break; }
}else{ game.physic.rightVel = 2; game.physic.leftVel = 2; game.man.isOnGround = false; } } } } |
Hope you help me

Thank,
Szinek
Solved