Fix "à la collision" — la marge de 3px restait insuffisante
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:
co-authored by
Claude Sonnet 5
parent
3a67ba622b
commit
726775fe4e
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user