맵 로드 시 플레이어 CameraComponent를 data/camera.json 값(현재 map01: zoom100·screenOffset0.5/0.655·confine)으로 설정. - data/camera.json: 카메라 framing 단일 설정 - tools/gen-camera.mjs: MapCamera.codeblock 생성 + 11맵 루트에 script.MapCamera 부착(idempotent) - 새 CameraComponent 미생성(엔진 소유) — 기존 플레이어 카메라 속성만 런타임 설정 - OnBeginPlay(client, ExecSpace 6) + LocalPlayer 카메라 재시도 타이머 - 메이커 Play 검증: zoom 60 테스트로 적용 입증, 100으로 복원. idempotent·결정적 - 참고: 맵 루트 client 스크립트는 ExecSpace 6 필요(1은 미발동) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
60 lines
1.8 KiB
Plaintext
60 lines
1.8 KiB
Plaintext
{
|
|
"Id": "",
|
|
"GameId": "",
|
|
"EntryKey": "codeblock://mapcamera",
|
|
"ContentType": "x-mod/codeblock",
|
|
"Content": "",
|
|
"Usage": 0,
|
|
"UsePublish": 1,
|
|
"UseService": 0,
|
|
"CoreVersion": "26.5.0.0",
|
|
"StudioVersion": "",
|
|
"DynamicLoading": 0,
|
|
"ContentProto": {
|
|
"Use": "Json",
|
|
"Json": {
|
|
"CoreVersion": {
|
|
"Major": 0,
|
|
"Minor": 2
|
|
},
|
|
"ScriptVersion": {
|
|
"Major": 1,
|
|
"Minor": 0
|
|
},
|
|
"Description": "",
|
|
"Id": "MapCamera",
|
|
"Language": 1,
|
|
"Name": "MapCamera",
|
|
"Type": 1,
|
|
"Source": 0,
|
|
"Target": null,
|
|
"Properties": [
|
|
{
|
|
"Type": "number",
|
|
"DefaultValue": "0",
|
|
"SyncDirection": 0,
|
|
"Attributes": [],
|
|
"Name": "CamTries"
|
|
}
|
|
],
|
|
"Methods": [
|
|
{
|
|
"Return": {
|
|
"Type": "void",
|
|
"DefaultValue": null,
|
|
"SyncDirection": 0,
|
|
"Attributes": [],
|
|
"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)",
|
|
"Scope": 2,
|
|
"ExecSpace": 6,
|
|
"Attributes": [],
|
|
"Name": "OnBeginPlay"
|
|
}
|
|
],
|
|
"EntityEventHandlers": []
|
|
}
|
|
}
|
|
} |