Arreglada la animació de morir, que s'updatava dos voltes per frame

This commit is contained in:
2024-10-30 10:15:53 +01:00
parent 06899d95a8
commit 2aa3f827cb
2 changed files with 11 additions and 29 deletions

View File

@@ -45,7 +45,7 @@ frames=20,21,22,23
[animation] [animation]
name=death name=death
speed=15 speed=10
loop=0 loop=0
frames=24,25,26,27 frames=24,25,26,27
[/animation] [/animation]

View File

@@ -175,39 +175,27 @@ void Player::move()
// Mueve el jugador a derecha o izquierda // Mueve el jugador a derecha o izquierda
pos_x_ += vel_x_; pos_x_ += vel_x_;
// Si el jugador abandona el area de juego por los laterales // Si el jugador abandona el area de juego por los laterales, restaura su posición
if ((pos_x_ < param.game.play_area.rect.x - 5) || (pos_x_ + WIDTH_ > play_area_.w + 5)) const float min_x = param.game.play_area.rect.x - 5;
{ const float max_x = play_area_.w + 5 - WIDTH_;
// Restaura su posición if ((pos_x_ < min_x) || (pos_x_ > max_x))
pos_x_ -= vel_x_; pos_x_ = std::clamp(pos_x_, min_x, max_x);
}
// Actualiza la posición del sprite // Actualiza la posición del sprite
player_sprite_->setPosX(getPosX()); player_sprite_->setPosX(pos_x_);
player_sprite_->setPosY(pos_y_); player_sprite_->setPosY(pos_y_);
power_sprite_->setPosX(getPosX() - power_up_desp_x_); power_sprite_->setPosX(getPosX() - power_up_desp_x_);
} }
else if (isDying()) else if (isDying())
{ {
player_sprite_->update(); // Si el cadaver abandona el area de juego por los laterales lo hace rebotar
// Si el cadaver abandona el area de juego por los laterales
if ((player_sprite_->getPosX() < param.game.play_area.rect.x) || (player_sprite_->getPosX() + WIDTH_ > play_area_.w)) if ((player_sprite_->getPosX() < param.game.play_area.rect.x) || (player_sprite_->getPosX() + WIDTH_ > play_area_.w))
{ player_sprite_->setVelX(-player_sprite_->getVelX());
// Restaura su posición
const float vx = player_sprite_->getVelX();
player_sprite_->setPosX(player_sprite_->getPosX() - vx);
// Rebota
player_sprite_->setVelX(-vx);
}
// Si el cadaver abandona el area de juego por abajo // Si el cadaver abandona el area de juego por abajo
if (player_sprite_->getPosY() > param.game.play_area.rect.h) if (player_sprite_->getPosY() > param.game.play_area.rect.h)
{
setStatusPlaying(PlayerStatus::DIED); setStatusPlaying(PlayerStatus::DIED);
}
} }
} }
@@ -215,12 +203,8 @@ void Player::move()
void Player::render() void Player::render()
{ {
if (power_up_ && isPlaying()) if (power_up_ && isPlaying())
{
if (power_up_counter_ > (POWERUP_COUNTER_ / 4) || power_up_counter_ % 20 > 4) if (power_up_counter_ > (POWERUP_COUNTER_ / 4) || power_up_counter_ % 20 > 4)
{
power_sprite_->render(); power_sprite_->render();
}
}
if (isRenderable()) if (isRenderable())
player_sprite_->render(); player_sprite_->render();
@@ -270,16 +254,14 @@ void Player::setAnimation()
} }
// Actualiza las animaciones de los sprites // Actualiza las animaciones de los sprites
player_sprite_->update(); player_sprite_->update(); // Hace avanzar las animaciones y mueve el cadaver del jugador
// powerSprite->setFlip(flip_walk);
power_sprite_->update(); power_sprite_->update();
} }
// Obtiene el valor de la variable // Obtiene el valor de la variable
int Player::getPosX() const int Player::getPosX() const
{ {
return int(pos_x_); return static_cast<int>(pos_x_);
} }
// Obtiene el valor de la variable // Obtiene el valor de la variable