feat(starfield): mou estrelles amb la mitjana de velocitats de les naus
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user