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);
|
bullet.postUpdate(delta_time);
|
||||||
}
|
}
|
||||||
trail_manager_.update(delta_time, ships_);
|
trail_manager_.update(delta_time, ships_);
|
||||||
// De moment world_velocity = {0, 0} → estrelles quietes; al ser-hi l'estat
|
// Starfield: world_velocity = -mitjana_de_naus_actives. Si dues naus van en
|
||||||
// del wraparound es resol normalment quan activem el moviment.
|
// sentits oposats, es cancel·len → estrelles quietes (cap jugador "guanya").
|
||||||
starfield_parallax_.update(delta_time, Vec2{.x = 0.0F, .y = 0.0F});
|
// 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);
|
playfield_.update(delta_time);
|
||||||
border_.update(delta_time);
|
border_.update(delta_time);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user