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]
name=death
speed=15
speed=10
loop=0
frames=24,25,26,27
[/animation]

View File

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