Convertido el juego a mapas con tiles de 8x8

This commit is contained in:
2022-08-18 21:18:15 +02:00
parent c848a8b234
commit 6a5f0b3b46
6 changed files with 77 additions and 21 deletions

View File

@@ -43,8 +43,8 @@ Player::Player(SDL_Renderer *renderer, Asset *asset, Input *input, Map *map)
coins = 0;
key.insert(key.end(), {0, 0, 0, 0, 0, 0});
const SDL_Point p = {0, 0};
collider.insert(collider.end(), {p, p, p, p, p, p});
underFeet.insert(underFeet.end(), {p, p});
collider.insert(collider.end(), {p, p, p, p, p, p, p, p, p, p, p, p});
underFeet.insert(underFeet.end(), {p, p, p});
}
// Destructor
@@ -139,15 +139,33 @@ void Player::updateColliders()
{
const SDL_Point p = {(int)x, (int)y};
// Lado izquierdo
collider[0] = p;
collider[1] = {p.x, p.y + 12};
collider[2] = {p.x, p.y + 23};
collider[3] = {p.x + 15, p.y};
collider[4] = {p.x + 15, p.y + 12};
collider[5] = {p.x + 15, p.y + 23};
collider[1] = {p.x, p.y + 7};
collider[2] = {p.x, p.y + 12};
collider[3] = {p.x, p.y + 18};
collider[4] = {p.x, p.y + 23};
// Lado derecho
collider[5] = {p.x + 15, p.y};
collider[6] = {p.x + 15, p.y + 7};
collider[7] = {p.x + 15, p.y + 12};
collider[8] = {p.x + 15, p.y + 18};
collider[9] = {p.x + 15, p.y + 23};
// Centro
collider[10] = {p.x + 7, p.y};
collider[11] = {p.x + 7, p.y + 23};
}
// Actualiza los puntos de los pies
void Player::updateFeet()
{
const SDL_Point p = {(int)x, (int)y};
underFeet[0] = {p.x, p.y + 24};
underFeet[1] = {p.x + 15, p.y + 24};
underFeet[1] = {p.x + 7, p.y + 24};
underFeet[2] = {p.x + 15, p.y + 24};
}
// Compruena las colisiones con el mapa
@@ -224,7 +242,7 @@ void Player::animate()
}
else
{
if (abs(vx) < 1.00f)
if (abs(vx) < 0.50f)
{
sprite->setCurrentAnimation("stand");
}
@@ -242,7 +260,7 @@ bool Player::isOnFloor()
{
bool onFloor = false;
updateColliders();
updateFeet();
for (auto f : underFeet)
{