delta-time: bullet.cpp
This commit is contained in:
@@ -60,13 +60,19 @@ void Bullet::render() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza el estado del objeto
|
// Actualiza el estado del objeto (frame-based)
|
||||||
auto Bullet::update() -> BulletMoveStatus {
|
auto Bullet::update() -> BulletMoveStatus {
|
||||||
sprite_->update();
|
sprite_->update();
|
||||||
return move();
|
return move();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implementación del movimiento usando BulletMoveStatus
|
// Actualiza el estado del objeto (time-based)
|
||||||
|
auto Bullet::update(float deltaTime) -> BulletMoveStatus {
|
||||||
|
sprite_->update(deltaTime);
|
||||||
|
return move(deltaTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Implementación del movimiento usando BulletMoveStatus (frame-based)
|
||||||
auto Bullet::move() -> BulletMoveStatus {
|
auto Bullet::move() -> BulletMoveStatus {
|
||||||
pos_x_ += vel_x_;
|
pos_x_ += vel_x_;
|
||||||
if (pos_x_ < param.game.play_area.rect.x - WIDTH || pos_x_ > param.game.play_area.rect.w) {
|
if (pos_x_ < param.game.play_area.rect.x - WIDTH || pos_x_ > param.game.play_area.rect.w) {
|
||||||
@@ -86,6 +92,29 @@ auto Bullet::move() -> BulletMoveStatus {
|
|||||||
return BulletMoveStatus::OK;
|
return BulletMoveStatus::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Implementación del movimiento usando BulletMoveStatus (time-based)
|
||||||
|
auto Bullet::move(float deltaTime) -> BulletMoveStatus {
|
||||||
|
// Convertir deltaTime (milisegundos) a factor de frame (asumiendo 60fps)
|
||||||
|
float frameFactor = deltaTime / (1000.0f / 60.0f);
|
||||||
|
|
||||||
|
pos_x_ += vel_x_ * frameFactor;
|
||||||
|
if (pos_x_ < param.game.play_area.rect.x - WIDTH || pos_x_ > param.game.play_area.rect.w) {
|
||||||
|
disable();
|
||||||
|
return BulletMoveStatus::OUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
pos_y_ += VEL_Y * frameFactor;
|
||||||
|
if (pos_y_ < param.game.play_area.rect.y - HEIGHT) {
|
||||||
|
disable();
|
||||||
|
return BulletMoveStatus::OUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
shiftSprite();
|
||||||
|
shiftColliders();
|
||||||
|
|
||||||
|
return BulletMoveStatus::OK;
|
||||||
|
}
|
||||||
|
|
||||||
auto Bullet::isEnabled() const -> bool {
|
auto Bullet::isEnabled() const -> bool {
|
||||||
return bullet_type_ != BulletType::NONE;
|
return bullet_type_ != BulletType::NONE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,9 +34,10 @@ class Bullet {
|
|||||||
~Bullet() = default; // Destructor
|
~Bullet() = default; // Destructor
|
||||||
|
|
||||||
// --- Métodos principales ---
|
// --- Métodos principales ---
|
||||||
void render(); // Dibuja la bala en pantalla
|
void render(); // Dibuja la bala en pantalla
|
||||||
auto update() -> BulletMoveStatus; // Actualiza el estado del objeto
|
auto update() -> BulletMoveStatus; // Actualiza el estado del objeto (frame-based)
|
||||||
void disable(); // Desactiva la bala
|
auto update(float deltaTime) -> BulletMoveStatus; // Actualiza el estado del objeto (time-based)
|
||||||
|
void disable(); // Desactiva la bala
|
||||||
|
|
||||||
// --- Getters ---
|
// --- Getters ---
|
||||||
[[nodiscard]] auto isEnabled() const -> bool; // Comprueba si está activa
|
[[nodiscard]] auto isEnabled() const -> bool; // Comprueba si está activa
|
||||||
@@ -64,7 +65,8 @@ class Bullet {
|
|||||||
// --- Métodos internos ---
|
// --- Métodos internos ---
|
||||||
void shiftColliders(); // Ajusta el círculo de colisión
|
void shiftColliders(); // Ajusta el círculo de colisión
|
||||||
void shiftSprite(); // Ajusta el sprite
|
void shiftSprite(); // Ajusta el sprite
|
||||||
auto move() -> BulletMoveStatus; // Mueve la bala y devuelve su estado
|
auto move() -> BulletMoveStatus; // Mueve la bala y devuelve su estado (frame-based)
|
||||||
|
auto move(float deltaTime) -> BulletMoveStatus; // Mueve la bala y devuelve su estado (time-based)
|
||||||
static auto calculateVelocity(BulletType bullet_type) -> float; // Calcula la velocidad horizontal de la bala
|
static auto calculateVelocity(BulletType bullet_type) -> float; // Calcula la velocidad horizontal de la bala
|
||||||
static auto buildAnimationString(BulletType bullet_type, bool powered) -> std::string; // Construye el string de animación
|
static auto buildAnimationString(BulletType bullet_type, bool powered) -> std::string; // Construye el string de animación
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user