feat(collisions): filtre per altura — saltar esquiva momies, roques i altres jugadors

This commit is contained in:
JailDesigner committed 2026-04-25 11:49:48 +02:00
1 parent 7b09a076b2
commit cd50626b88
11 files changed
+88 -1

No files matched your search

+11
View File
@@ -103,6 +103,17 @@ namespace {
auto* b = ps[1];
if (a == nullptr || b == nullptr) { return; }
// Filtre per altura: si un dels dos està en l'aire per damunt
// del cos de l'altre, no hi ha contacte possible — el saltador
// sobrevola. Saltar fa de "moviment lliure" per al resolver.
// `body_height` és estàtic carregat des del YAML; cppcheck el llig
// com a sempre-zero perquè no veu la inicialització en runtime.
const auto BODY_H = static_cast<float>(Player::body_height);
// cppcheck-suppress knownConditionTrueFalse
if (BODY_H > 0.0F && a->isAirborne() && a->getJumpZ() > BODY_H) { return; }
// cppcheck-suppress knownConditionTrueFalse
if (BODY_H > 0.0F && b->isAirborne() && b->getJumpZ() > BODY_H) { return; }
// Calculem l'overlap previst en l'espai de la hit-box petita:
// els jugadors han de poder acostar-se molt (caixes de moviment
// 16×16 quasi tocant) sense disparar el resolver; només quan el