diff --git a/src/main.js b/src/main.js index b40ed5a..02c6569 100644 --- a/src/main.js +++ b/src/main.js @@ -919,15 +919,18 @@ function getDoorWorldPosition(room, door, centerX, centerZ, halfSizeX, halfSizeZ meshPos.z = doorWorldPos.z; rotation = Math.PI / 2; // Offset relativo al centro de la pared - wallOffset = doorWorldPos.z - centerZ; + // Con rotation=π/2, el eje X local apunta hacia -Z, entonces: + // offset_local = -(doorZ - centerZ) + wallOffset = -(doorWorldPos.z - centerZ); break; case 'W': // Pared Oeste: puerta alineada en Z, X en el borde oeste meshPos.x = centerX - halfSizeX; meshPos.z = doorWorldPos.z; rotation = Math.PI / 2; - // Para pared Oeste, el offset es directo (sin inversión) - wallOffset = doorWorldPos.z - centerZ; + // Con rotation=π/2, el eje X local apunta hacia -Z (igual que pared E) + // Por tanto, también necesita offset invertido + wallOffset = -(doorWorldPos.z - centerZ); break; }