From 700d3846fbaeabed27e9cc0fc53479161b503959 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Tue, 19 Nov 2024 18:59:35 +0100 Subject: [PATCH] =?UTF-8?q?Afegits=20rebots=20en=20la=20animaci=C3=B3=20de?= =?UTF-8?q?=20morir?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/player.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/source/player.cpp b/source/player.cpp index 2838985..cb0c551 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -182,11 +182,22 @@ void Player::move() // Si el cadaver toca el suelo cambia el estado if (player_sprite_->getPosY() > param.game.play_area.rect.h - HEIGHT_) { - setPlayingState(PlayerState::DIED); - pos_x_ = player_sprite_->getPosX(); - pos_y_ = default_pos_y_; - player_sprite_->clear(); - shiftSprite(); + if (player_sprite_->getVelY() < 2.0f) + { + // Si la velocidad de rebote es baja, termina de rebotar y cambia de estado + setPlayingState(PlayerState::DIED); + pos_x_ = player_sprite_->getPosX(); + pos_y_ = default_pos_y_; + player_sprite_->clear(); + shiftSprite(); + } + else + { + // Decrementa las velocidades de rebote + player_sprite_->setPosY(param.game.play_area.rect.h - HEIGHT_); + player_sprite_->setVelY(player_sprite_->getVelY() * -0.5f); + player_sprite_->setVelX(player_sprite_->getVelX() * 0.75f); + } } break; }