Ya baja por las rampas

This commit is contained in:
2022-09-10 19:18:56 +02:00
parent 0b405e4f99
commit c905c348d5
2 changed files with 39 additions and 0 deletions

View File

@@ -271,6 +271,12 @@ void Player::move()
setState(s_standing); setState(s_standing);
} }
} }
// Si está bajando la rampa, recoloca al jugador
if (isOnDownSlope())
{
y += 1;
}
} }
// Se mueve hacia la derecha // Se mueve hacia la derecha
@@ -307,6 +313,12 @@ void Player::move()
setState(s_standing); setState(s_standing);
} }
} }
// Si está bajando la rampa, recoloca al jugador
if (isOnDownSlope())
{
y += 1;
}
} }
// Si ha salido del suelo, el jugador cae // Si ha salido del suelo, el jugador cae
@@ -557,6 +569,30 @@ bool Player::isOnFloor()
return onFloor; return onFloor;
} }
// Comprueba si el jugador está sobre una rampa hacia abajo
bool Player::isOnDownSlope()
{
bool onSlope = false;
updateFeet();
// Cuando el jugador baja una escalera, se queda volando
// Hay que mirar otro pixel más por debajo
underFeet[0].y += 1;
underFeet[1].y += 1;
// Comprueba las rampas
onSlope |= room->checkLeftSlopes(&underFeet[0]);
onSlope |= room->checkRightSlopes(&underFeet[1]);
if (onSlope)
{
debug->add("ONSLOPE");
}
return onSlope;
}
// Comprueba que el jugador no atraviese ninguna pared // Comprueba que el jugador no atraviese ninguna pared
bool Player::checkWalls() bool Player::checkWalls()
{ {

View File

@@ -91,6 +91,9 @@ public:
// Comprueba si el jugador tiene suelo debajo de los pies // Comprueba si el jugador tiene suelo debajo de los pies
bool isOnFloor(); bool isOnFloor();
// Comprueba si el jugador está sobre una rampa hacia abajo
bool isOnDownSlope();
// Comprueba que el jugador no atraviese ninguna pared // Comprueba que el jugador no atraviese ninguna pared
bool checkWalls(); bool checkWalls();