From fbf5cfe19f94976e1028d01da3873095f4f1374c Mon Sep 17 00:00:00 2001 From: gahusb Date: Tue, 9 Jun 2026 23:22:52 +0900 Subject: [PATCH] =?UTF-8?q?fix(map-camera):=20ScreenOffset=E2=86=92CameraO?= =?UTF-8?q?ffset=EB=A1=9C=20=EC=8B=9C=EC=A0=90=20=EC=A1=B0=EC=A0=95=20+=20?= =?UTF-8?q?zoom=2090?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ConfineCameraArea=true에서는 ScreenOffset이 무시됨(MSW 문서·실측 확인) → 시점 이동은 CameraOffset(월드 좌표)으로. - data/camera.json: zoomRatio 90, cameraOffsetX 1.5, cameraOffsetY -1 추가 (x+ 오른쪽 / y- 아래) - gen-camera: codeblock에 cam.CameraOffset = Vector2(...) 굽기 추가 - 메이커 Play 검증: 파이프라인(camera.json→gen-camera→reload)으로 zoom90·offset(1.5,-1) 적용, 시점이 우하단으로 이동 확인 - 참고: 시점 조정은 CameraOffset 사용(ScreenOffset은 confine=true에서 무효, 범위 0~1) Co-Authored-By: Claude Opus 4.8 (1M context) --- RootDesk/MyDesk/MapCamera.codeblock | 2 +- data/camera.json | 6 ++++-- tools/gen-camera.mjs | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/RootDesk/MyDesk/MapCamera.codeblock b/RootDesk/MyDesk/MapCamera.codeblock index 594d8e8..b9810fc 100644 --- a/RootDesk/MyDesk/MapCamera.codeblock +++ b/RootDesk/MyDesk/MapCamera.codeblock @@ -47,7 +47,7 @@ "Name": null }, "Arguments": [], - "Code": "self.CamTries = 0\nlocal eventId = 0\nlocal function apply()\n\tself.CamTries = self.CamTries + 1\n\tlocal cam = nil\n\tlocal lp = _UserService.LocalPlayer\n\tif lp ~= nil then\n\t\tcam = lp.CameraComponent\n\tend\n\tif cam == nil then\n\t\tcam = _CameraService:GetCurrentCameraComponent()\n\tend\n\tif cam ~= nil then\n\t\tcam.ZoomRatio = 100\n\t\tcam.ScreenOffset = Vector2(0.5, 0.655)\n\t\tcam.ConfineCameraArea = true\n\t\t_TimerService:ClearTimer(eventId)\n\telseif self.CamTries > 30 then\n\t\t_TimerService:ClearTimer(eventId)\n\tend\nend\neventId = _TimerService:SetTimerRepeat(apply, 0.1)", + "Code": "self.CamTries = 0\nlocal eventId = 0\nlocal function apply()\n\tself.CamTries = self.CamTries + 1\n\tlocal cam = nil\n\tlocal lp = _UserService.LocalPlayer\n\tif lp ~= nil then\n\t\tcam = lp.CameraComponent\n\tend\n\tif cam == nil then\n\t\tcam = _CameraService:GetCurrentCameraComponent()\n\tend\n\tif cam ~= nil then\n\t\tcam.ZoomRatio = 90\n\t\tcam.ScreenOffset = Vector2(0.5, 0.655)\n\t\tcam.ConfineCameraArea = true\n\t\tcam.CameraOffset = Vector2(1.5, -1)\n\t\t_TimerService:ClearTimer(eventId)\n\telseif self.CamTries > 30 then\n\t\t_TimerService:ClearTimer(eventId)\n\tend\nend\neventId = _TimerService:SetTimerRepeat(apply, 0.1)", "Scope": 2, "ExecSpace": 6, "Attributes": [], diff --git a/data/camera.json b/data/camera.json index 5592b0a..62ac469 100644 --- a/data/camera.json +++ b/data/camera.json @@ -1,6 +1,8 @@ { - "zoomRatio": 100, + "zoomRatio": 90, "screenOffsetX": 0.5, "screenOffsetY": 0.655, - "confineCameraArea": true + "confineCameraArea": true, + "cameraOffsetX": 1.5, + "cameraOffsetY": -1 } diff --git a/tools/gen-camera.mjs b/tools/gen-camera.mjs index d507a96..5ac6790 100644 --- a/tools/gen-camera.mjs +++ b/tools/gen-camera.mjs @@ -63,6 +63,7 @@ local function apply() cam.ZoomRatio = ${CAM.zoomRatio} cam.ScreenOffset = Vector2(${CAM.screenOffsetX}, ${CAM.screenOffsetY}) cam.ConfineCameraArea = ${CAM.confineCameraArea} + cam.CameraOffset = Vector2(${CAM.cameraOffsetX}, ${CAM.cameraOffsetY}) _TimerService:ClearTimer(eventId) elseif self.CamTries > 30 then _TimerService:ClearTimer(eventId)