카메라 원상복귀(스카이식 자동 리센터) — os.crowny.org village.js
개요
사용자 보고 "카메라 원상복귀 안됨" 진단→수리. 원인 = 07-25 오빗 재구현이 "드래그=시선"까지만 구현하고 스카이의 나머지 반쪽(
이동 시 카메라가 등 뒤·기본 피치로 복귀)이 없어 드래그로 돌린 각이 영구 잔류. 'c'키=관찰뷰(복귀 아님), 휠줌=거리만 복귀.
무엇을 했는지 (village.js 1504줄, 백업 .bak-리센터전)
- CAMCTL에 recenterYawRate 1.2 · recenterPitchRate 1.0 · pitchDefault 26° 추가.
angleDeltaDeg 최단 각도차(±180° 랩) 헬퍼 — 누적 각도에서 한 바퀴 헛도는 복귀 차단.
- 메인 루프:
!dragging && (걷는중 || 비행중)이면 camAzimTarget→플레이어 등 뒤(h+180°), camElevTarget→26°로 초당 수렴. 드래그 중엔 개입 정지(자유 시선 유지).
- 각도 정규화: |target|>720°면 camAzim/target을 같은 360° 배수로 함께 이동(상대차 보존).
- 정본 시선각도.한선(120줄): 최단각도차천·리센터스텝천 추가 — 셀프테스트 30/30 PASS. 하니스 23/23 · 무회귀(FK 5/5·비행 23/23·수집연출 31/31) · node OK — 메인 재실행 확증.
라이브 확증 (크라우니AI검증.sh — 크롬 무사용)
- 리센터시연.html rAF 스케줄러 드라이버(신규 패턴): 헤드리스 WKWebView에서 setTimeout/setInterval이 간헐 스로틀되므로, 시퀀스를 requestAnimationFrame 경과시간 기준 단계 실행으로 구동(게임 페이지는 rAF 상시 구동이라 안정) — 검증도구 지식으로 등재.
- d(드래그만): 시점 틀어진 채 유지(복귀 없음 기준 확인). r(드래그 후 걷기 ~0.7s): 카메라가 플레이어 등 뒤 정면 프레이밍으로 복귀한 스냅샷 확보 — 리센터 작동 확증.
관련 파일
- village.js(.bak-리센터전) · 게임슬라이스/시선각도.한선 · 시선각도테스트.js · 리센터시연.html(rAF 드라이버, 재사용 자산)
잔여
- 복귀 속도(1.2/s)·기본 피치(26°) 손맛 판정 = 사장님. CAMCTL 상수 2개로 즉시 튜닝.
- 정지 상태에서의 수동 복귀 단축키(더블클릭/R)는 미구현 — 필요 시 1줄 추가 거리.
추가(같은 날) — 캐릭터 얼굴 보기(셀피 뷰) 노출
- 사용자 보고 "얼굴을 볼 수 없음" → 실측: 정지+C키=얼굴 정면 근접 뷰 정상 동작(헤드리스 스냅샷 확증), 걷기 시작하면 리센터가 등 뒤 회수(설계). 진짜 문제=발견 불가(팁에 안내 없음)+모바일 수단 부재.
- 수리: C키 로직을
selfView()로 추출 → 🤳 버튼(우측 열 top:302, 💃206/🎵254 충돌 회피) + 팁 문구 "C/🤳=내 캐릭터 보기" + 토스트 안내("움직이면 원래 시점으로"). 정본 시선각도.한선에 관찰뷰 3함수+테스트 4건(34/34). 전 게이트·라이브 확증 완료.