fix(ship-3d): exit convergeix al VP sense travessar-lo (sense creuament entre naus)
This commit is contained in:
@@ -24,10 +24,11 @@ namespace Title {
|
|||||||
constexpr float SHIP_EXIT_Z = 800.0F;
|
constexpr float SHIP_EXIT_Z = 800.0F;
|
||||||
constexpr Vec3 VANISHING_POINT{.x = 0.0F, .y = 0.0F, .z = SHIP_EXIT_Z};
|
constexpr Vec3 VANISHING_POINT{.x = 0.0F, .y = 0.0F, .z = SHIP_EXIT_Z};
|
||||||
|
|
||||||
// Distància que la nau recorre durant EXITING, sumada al forward_dir
|
// Profunditat addicional darrere del VP cap a la qual les naus exiting
|
||||||
// sobre la posició inicial de l'exit. La nau travessa el VP i continua
|
// convergeixen. Així P1 (X<0) i P2 (X>0) mantenen sempre els seus
|
||||||
// allunyant-se per perspectiva fins gairebé desaparèixer per mida.
|
// hemisferis i no es creuen al passar pel VP — totes dues acaben al
|
||||||
constexpr float SHIP_EXIT_TRAVEL = 2500.0F;
|
// centre projectat (640, 360) sense travessar-lo.
|
||||||
|
constexpr float SHIP_EXIT_OVERFLOW = 700.0F;
|
||||||
|
|
||||||
// Directors VP → origen de cada nau, normalitzats. P1 ve des de "les 7"
|
// Directors VP → origen de cada nau, normalitzats. P1 ve des de "les 7"
|
||||||
// del rellotge (baix-esquerra), P2 des de "les 5" (baix-dreta). Els
|
// del rellotge (baix-esquerra), P2 des de "les 5" (baix-dreta). Els
|
||||||
@@ -283,13 +284,12 @@ namespace Title {
|
|||||||
const float PROGRESS = std::min(1.0F, ship.state_time / EXIT_DURATION);
|
const float PROGRESS = std::min(1.0F, ship.state_time / EXIT_DURATION);
|
||||||
const float EASED = Easing::easeInQuad(PROGRESS);
|
const float EASED = Easing::easeInQuad(PROGRESS);
|
||||||
|
|
||||||
// Destí: forward_dir prolongat des de l'inici de l'exit. La nau
|
// Destí: punt fix a (VP.x, VP.y, VP.z + OVERFLOW). Cada nau s'apropa
|
||||||
// segueix la mateixa línia recta (mateix path), travessa el VP i
|
// al centre projectat des del seu costat sense creuar el VP.
|
||||||
// continua allunyant-se fins a la mida visual ~0.
|
|
||||||
const Vec3 EXIT_DEST{
|
const Vec3 EXIT_DEST{
|
||||||
.x = ship.initial_position.x + (ship.forward_dir.x * SHIP_EXIT_TRAVEL),
|
.x = VANISHING_POINT.x,
|
||||||
.y = ship.initial_position.y + (ship.forward_dir.y * SHIP_EXIT_TRAVEL),
|
.y = VANISHING_POINT.y,
|
||||||
.z = ship.initial_position.z + (ship.forward_dir.z * SHIP_EXIT_TRAVEL),
|
.z = VANISHING_POINT.z + SHIP_EXIT_OVERFLOW,
|
||||||
};
|
};
|
||||||
ship.current_position.x = Easing::lerp(ship.initial_position.x, EXIT_DEST.x, EASED);
|
ship.current_position.x = Easing::lerp(ship.initial_position.x, EXIT_DEST.x, EASED);
|
||||||
ship.current_position.y = Easing::lerp(ship.initial_position.y, EXIT_DEST.y, EASED);
|
ship.current_position.y = Easing::lerp(ship.initial_position.y, EXIT_DEST.y, EASED);
|
||||||
|
|||||||
Reference in New Issue
Block a user