fix(player): el z-order del saltador respecta la seua posició al sòl
This commit is contained in:
1 parent
f0a0515f28
commit
06ff11d563
1 file changed
+12
-10
@@ -148,20 +148,22 @@ class Player : public AnimatedSprite {
|
|||||||
|
|
||||||
// Y de la base del jugador (cara inferior de la caixa de colisió). Usada
|
// Y de la base del jugador (cara inferior de la caixa de colisió). Usada
|
||||||
// per al Z-order contra els sarcs: peus per sobre d'un sarc → darrere;
|
// per al Z-order contra els sarcs: peus per sobre d'un sarc → darrere;
|
||||||
// per sota → davant. Mentre el jugador està en l'aire, el feet visual
|
// per sota → davant. NO restem `jump_z_`: el saltador no canvia de
|
||||||
// puja amb `jump_z_` perquè s'ordene davant dels actors a la mateixa
|
// tile lògica, només s'eleva visualment, i el sorting ha de respectar
|
||||||
// fila lògica.
|
// la posició al món (un sarc al nord segueix darrere encara que el
|
||||||
|
// sprite del jugador estigui amunt). Veure també `getGroundFeetY`,
|
||||||
|
// que coincideix amb aquest mètode i s'usa específicament per
|
||||||
|
// marcar la posició de la sombra a nivell de sòl.
|
||||||
[[nodiscard]] auto getFeetY() const -> float {
|
[[nodiscard]] auto getFeetY() const -> float {
|
||||||
return getPosY() + static_cast<float>(collision_y_offset + collision_size) - jump_z_;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Y de la base del jugador IGNORANT el salt (sempre la base del cos
|
|
||||||
// al món, no la posició visual). L'usa el render de la sombra perquè
|
|
||||||
// es pinte sempre al sòl, encara que el jugador estigui enlaire.
|
|
||||||
[[nodiscard]] auto getGroundFeetY() const -> float {
|
|
||||||
return getPosY() + static_cast<float>(collision_y_offset + collision_size);
|
return getPosY() + static_cast<float>(collision_y_offset + collision_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Alies semàntic: els peus del jugador al sòl. Coincideix amb
|
||||||
|
// `getFeetY` i s'usa al callsite del render de la sombra per fer
|
||||||
|
// explícit que la sombra es pinta al pla del sòl, no a la posició
|
||||||
|
// visual del sprite.
|
||||||
|
[[nodiscard]] auto getGroundFeetY() const -> float { return getFeetY(); }
|
||||||
|
|
||||||
// Estat actual de la màquina d'estats. L'usa el render (animació
|
// Estat actual de la màquina d'estats. L'usa el render (animació
|
||||||
// jump_*), el resolver de col·lisions (filtre per altura) i el
|
// jump_*), el resolver de col·lisions (filtre per altura) i el
|
||||||
// GameScene (per saber si renderitzar la sombra).
|
// GameScene (per saber si renderitzar la sombra).
|
||||||
|
|||||||
Reference in new issue
Block a user