Fix "à la collision" — la marge de 3px restait insuffisante
Build and deploy / test-python (push) Successful in 5m56s
Build and deploy / test-js (push) Successful in 48s
Build and deploy / build-and-push (push) Skipped
Build and deploy / deploy (push) Skipped

forgeWouldCollide (personnage-controller.js) bloque le déplacement par
PAS ENTIER (cmd.vitesse px/tick, 4 par défaut mais réglable) : le
joueur peut donc rester bloqué jusqu'à PRESQUE un pas entier de
distance de l'obstacle, pas seulement 1-3px — la marge de tolérance du
correctif précédent (3px) restait insuffisante même pour la vitesse par
défaut dans les cas les moins favorables. Portée à 24px, confortable
pour toute vitesse raisonnablement configurée sans jamais déclencher
"à la collision" alors que les objets sont encore visiblement séparés.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
william
2026-09-03 12:42:17 +02:00
co-authored by Claude Sonnet 5
parent 3a67ba622b
commit 726775fe4e
+18 -11
View File
@@ -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 {