diff --git a/static/js/play/collision-rules-controller.js b/static/js/play/collision-rules-controller.js index beba63a4..e9ae0569 100644 --- a/static/js/play/collision-rules-controller.js +++ b/static/js/play/collision-rules-controller.js @@ -32,17 +32,24 @@ function forgeElementBoxRect(el, collision) { return forgeCollisionRectFromBox({ left: left, top: top, width: width, height: height }, collision); } -// Une petite marge (px) appliquée SEULEMENT à la détection du -// déclencheur "collision" ci-dessous — jamais au blocage physique du -// déplacement (forgeWouldCollide, personnage-controller.js, qui reste -// strict). Bug corrigé : un objet est presque toujours aussi un -// OBSTACLE SOLIDE (collision activée par défaut) — le joueur ne peut -// donc jamais aller au-delà d'un contact tangent (bords qui se touchent -// SANS se chevaucher), et un chevauchement STRICT (forgeShapesOverlap -// nu) n'était donc jamais atteint : la règle "à la collision" ne se -// déclenchait jamais. Cette marge élargit la boîte testée pour que ce -// simple contact compte comme une collision. -var FORGE_COLLISION_RULE_TOUCH_MARGIN = 3; +// Une marge (px) appliquée SEULEMENT à la détection du déclencheur +// "collision" ci-dessous — jamais au blocage physique du déplacement +// (forgeWouldCollide, personnage-controller.js, qui reste strict). Bug +// corrigé : un objet est presque toujours aussi un OBSTACLE SOLIDE +// (collision activée par défaut) — le joueur ne peut donc jamais aller +// au-delà d'un contact tangent, et un chevauchement STRICT +// (forgeShapesOverlap nu) n'était donc jamais atteint : la règle "à la +// collision" ne se déclenchait jamais. forgeWouldCollide bloque le +// déplacement PAR PAS ENTIER (cmd.vitesse px/tick, 4 par défaut mais +// réglable plus haut dans "Commandes") : le joueur peut donc rester +// bloqué jusqu'à PRESQUE un pas entier de distance de l'obstacle, pas +// seulement 1-2px — une marge trop petite (ex. 3px) restait donc +// insuffisante pour une vitesse par défaut déjà. 24px couvre +// confortablement toute vitesse raisonnablement configurée, tout en +// restant petit face à la taille d'un sprite (souvent 64-128px) pour ne +// jamais déclencher "à la collision" alors que les objets sont encore +// visiblement séparés. +var FORGE_COLLISION_RULE_TOUCH_MARGIN = 24; function forgeExpandRect(rect, margin) { return {