Java Colisión 2D?
Hola chicos, estoy haciendo un juego Java 2D y estoy tratando de descubrir cómo hacer un buen código de colisión. Actualmente estoy usando el siguiente código:
public void checkCollision() {
Rectangle player_rectangle = new Rectangle(player.getX(),player.getY(),32,32);
for(Wall wall : walls) {
Rectangle wall_rectangle = new Rectangle(wall.getX(), wall.getY(), 32,32);
if (player_rectangle.intersects(wall_rectangle)) {
Rectangle intersection = (Rectangle) player_rectangle.createIntersection(wall_rectangle);
if (player.xspeed > 0) {
player.x -= intersection.getWidth();
}
if (player.yspeed > 0) {
player.y -= intersection.getHeight();
}
if (player.xspeed < 0) {
player.x += intersection.getWidth();
}
if (player.yspeed < 0) {
player.y += intersection.getHeight();
}
Print(Integer.toString(intersection.width) + ", " + Integer.toString(intersection.height));
}
}
}
Con este código funciona bien si presiona un botón, pero si presiona hacia abajo y hacia la izquierda, por ejemplo, el jugador volará en una dirección aleatoria.
Aquí hay una foto de los tipos de mapas que tengo: