El sistema usa:
colision.AreaSolida) para cada entidad.detectorColisiones que predice si el siguiente movimiento toca un tile sólido.Solo los tiles que bloquean el paso (pared, agua, árbol) tienen colision = true:
tiles[1] = new Tile();
tiles[1].imagen = ImageIO.read(getClass().getResource("/tiles/pared_adobe.png"));
tiles[1].colision = true;
tiles[2] = new Tile();
tiles[2].imagen = ImageIO.read(getClass().getResource("/tiles/agua_normal.png"));
tiles[2].colision = true;
tiles[4] = new Tile();
tiles[4].imagen = ImageIO.read(getClass().getResource("/tiles/arbol.png"));
tiles[4].colision = true;

En la clase Jugador, el área sólida se define para ajustar los límites de colisión.
AreaSolida = new Rectangle();
AreaSolida.x = 8;
AreaSolida.y = 16;
AreaSolida.width = 32;
AreaSolida.height = 32;
Esto hace que el hitbox sea más pequeño que el sprite de 48×48, permitiendo moverse con mayor precisión entre pasillos estrechos.
Dentro de update() del jugador: