diff --git a/src/systems/CameraSystem.ts b/src/systems/CameraSystem.ts index a463c75..a41b456 100644 --- a/src/systems/CameraSystem.ts +++ b/src/systems/CameraSystem.ts @@ -52,19 +52,10 @@ export class CameraSystem { d: kb.addKey(Phaser.Input.Keyboard.KeyCodes.D), } - // Scroll wheel zoom — zoom toward mouse pointer - this.scene.input.on('wheel', (ptr: Phaser.Input.Pointer, _objs: unknown, _dx: number, dy: number) => { + // Scroll wheel zoom + this.scene.input.on('wheel', (_ptr: Phaser.Input.Pointer, _objs: unknown, _dx: number, dy: number) => { const newZoom = Phaser.Math.Clamp(cam.zoom - Math.sign(dy) * ZOOM_STEP, MIN_ZOOM, MAX_ZOOM) - if (newZoom === cam.zoom) return - - // ptr.worldX/Y is pre-computed by Phaser and represents the world position under the pointer - const worldX = ptr.worldX - const worldY = ptr.worldY - - // Apply zoom first, then reposition scroll so worldX stays under ptr.x cam.setZoom(newZoom) - cam.scrollX = worldX - ptr.x / newZoom - cam.scrollY = worldY - ptr.y / newZoom }) // Middle-click pan: start on button down