diff --git a/source/player.cpp b/source/player.cpp index 655e2b7..a101b83 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -242,11 +242,11 @@ void Player::move() proj.y = (int)y; proj.h = h; proj.w = (int)vx; - + // **new - proj.x = (int)(x+vx); + proj.x = (int)(x + vx); proj.y = (int)y; - proj.h = h; + proj.h = h - 1; proj.w = (int)abs(vx); // Comprueba la colisión @@ -264,13 +264,13 @@ void Player::move() } // Se mueve hacia la derecha - if (vx > 0.0f) + else if (vx > 0.0f) { // Crea el rectangulo de proyección en el eje X para ver si colisiona SDL_Rect proj; proj.x = (int)x + w; proj.y = (int)y; - proj.h = h; + proj.h = h - 1; proj.w = (int)(vx); // Comprueba la colisión @@ -303,11 +303,11 @@ void Player::move() proj.h = (int)vy; proj.w = w; - // **new + // **new proj.x = (int)x; - proj.y = (int)(y+vy); + proj.y = (int)(y + vy); proj.h = (int)abs(vy); - proj.w = w; + proj.w = w - 1; // Comprueba la colisión const int pos = room->checkBottomSurfaces(&proj); @@ -332,7 +332,7 @@ void Player::move() proj.x = (int)x; proj.y = (int)y + h; proj.h = (int)vy; - proj.w = w; + proj.w = w - 1; // Comprueba la colisión const int pos = room->checkTopSurfaces(&proj); diff --git a/source/utils.cpp b/source/utils.cpp index dcf761c..5e29ec2 100644 --- a/source/utils.cpp +++ b/source/utils.cpp @@ -158,7 +158,7 @@ bool checkCollision(h_line_t &l, SDL_Rect &r) } // Comprueba si el inicio de la linea esta a la derecha del rectangulo - if (l.x1 >= r.x + r.w) + if (l.x1 > r.x + r.w) { return false; }