diff --git a/source/game/scenes/title_scene.cpp b/source/game/scenes/title_scene.cpp index 5c20fe4..25e292f 100644 --- a/source/game/scenes/title_scene.cpp +++ b/source/game/scenes/title_scene.cpp @@ -497,8 +497,13 @@ void TitleScene::updateDemoDiveState(float delta_time) { // Càmera 3D real cap a +Z: starfield i naus es projecten amb la càmera, així // que les estrelles es rasguen i les naus creixen i s'escapen pels costats. + // IMPORTANT: cal moure posició I target alhora; si només es mou la posició, + // forward = (target - position) s'inverteix en passar el target i la càmera + // gira cap enrere (tot apareix invertit i mirant a l'espectador). if (camera_ != nullptr) { - camera_->setPosition(Vec3{.x = 0.0F, .y = 0.0F, .z = EASED * D::CAMERA_DISTANCE}); + const float Z = EASED * D::CAMERA_DISTANCE; + camera_->setPosition(Vec3{.x = 0.0F, .y = 0.0F, .z = Z}); + camera_->setTarget(Vec3{.x = 0.0F, .y = 0.0F, .z = Z + 1.0F}); } // Logo i peu són 2D: els fakegem el dive amb un zoom des del centre. dive_zoom_ = std::lerp(1.0F, D::ZOOM_MAX, EASED);