feat(collisions): filtre per altura — saltar esquiva momies, roques i altres jugadors
This commit is contained in:
1 parent
7b09a076b2
commit
cd50626b88
11 files changed
+88
-1
No files matched your search
@@ -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
|
||||
|
||||
Reference in new issue
Block a user