diff --git a/source/player.cpp b/source/player.cpp index c432984..1758219 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -134,11 +134,12 @@ void Player::render() // Actualiza las variables del objeto void Player::update() { - checkInput(); // Comprueba las entradas y modifica variables - move(); // Recalcula la posición del jugador - animate(); // Establece la animación del jugador - checkBorders(); // Comprueba si está situado en alguno de los cuatro bordes de la habitación - checkJumpEnd(); // Comprueba si ha finalizado el salto al alcanzar la altura de inicio + checkInput(); // Comprueba las entradas y modifica variables + move(); // Recalcula la posición del jugador + animate(); // Establece la animación del jugador + checkBorders(); // Comprueba si está situado en alguno de los cuatro bordes de la habitación + checkJumpEnd(); // Comprueba si ha finalizado el salto al alcanzar la altura de inicio + checkKillingTiles(); // Comprueba que el jugador no toque ningun tile de los que matan } // Comprueba las entradas y modifica variables @@ -568,21 +569,24 @@ bool Player::isOnDownSlope() return onSlope; } -// Comprueba que el jugador no atraviese ninguna pared -bool Player::checkWalls() +// Comprueba que el jugador no toque ningun tile de los que matan +bool Player::checkKillingTiles() { // Actualiza los puntos de colisión updateColliderPoints(); - // Comprueba si ha colisionado con un muro - bool wall = false; + // Comprueba si hay contacto + bool check = false; for (auto c : colliderPoints) { - wall |= (room->getTile(c) == t_wall); + check |= (room->getTile(c) == t_kill); } - return wall; + // Mata al jugador si hay colisión + alive = !check; + + return check; } // Obtiene algunos parametros del jugador diff --git a/source/player.h b/source/player.h index 29f5ea3..4644e8c 100644 --- a/source/player.h +++ b/source/player.h @@ -106,8 +106,8 @@ public: // Comprueba si el jugador está sobre una rampa hacia abajo bool isOnDownSlope(); - // Comprueba que el jugador no atraviese ninguna pared - bool checkWalls(); + // Comprueba que el jugador no toque ningun tile de los que matan + bool checkKillingTiles(); // Actualiza los puntos de colisión void updateColliderPoints(); diff --git a/source/room.cpp b/source/room.cpp index 0d8d8bf..4958556 100644 --- a/source/room.cpp +++ b/source/room.cpp @@ -633,14 +633,14 @@ tile_e Room::getTile(int index) return t_slope_l; } - // Las filas 10-17 son de tiles t_passable - if ((tilemap[index] >= 10 * tilesetWidth) && (tilemap[index] < 18 * tilesetWidth)) + // Las filas 10-18 son de tiles t_passable + if ((tilemap[index] >= 10 * tilesetWidth) && (tilemap[index] < 19 * tilesetWidth)) { return t_passable; } - // Las fila 18 es de tiles t_kill - if ((tilemap[index] >= 18 * tilesetWidth) && (tilemap[index] < 19 * tilesetWidth)) + // Las fila 19 es de tiles t_kill + if ((tilemap[index] >= 19 * tilesetWidth) && (tilemap[index] < 20 * tilesetWidth)) { return t_kill; }