feat(starfield): mou estrelles amb la mitjana de velocitats de les naus

This commit is contained in:
2026-05-22 19:51:40 +02:00
parent 1db7368c9f
commit a342d79b86
+18 -3
View File
@@ -214,9 +214,24 @@ void GameScene::stepPhysics(float delta_time) {
bullet.postUpdate(delta_time);
}
trail_manager_.update(delta_time, ships_);
// De moment world_velocity = {0, 0} → estrelles quietes; al ser-hi l'estat
// del wraparound es resol normalment quan activem el moviment.
starfield_parallax_.update(delta_time, Vec2{.x = 0.0F, .y = 0.0F});
// Starfield: world_velocity = -mitjana_de_naus_actives. Si dues naus van en
// sentits oposats, es cancel·len → estrelles quietes (cap jugador "guanya").
// Si només n'hi ha una activa, segueix la seva velocitat.
Vec2 ship_vel_avg{.x = 0.0F, .y = 0.0F};
int n_active = 0;
for (const auto& ship : ships_) {
if (ship.isActive()) {
const Vec2 V = ship.getVelocityVector();
ship_vel_avg.x += V.x;
ship_vel_avg.y += V.y;
n_active++;
}
}
if (n_active > 0) {
ship_vel_avg.x /= static_cast<float>(n_active);
ship_vel_avg.y /= static_cast<float>(n_active);
}
starfield_parallax_.update(delta_time, Vec2{.x = -ship_vel_avg.x, .y = -ship_vel_avg.y});
playfield_.update(delta_time);
border_.update(delta_time);