🚀 오늘의 작업 요약
- Frame Architecture: SpriteMask를 활용해 햄초와 배경이 지정된 프레임(창문) 안에서만 보이도록 시각적 제한 구현.
- Infinite Gameplay: 배경과 발판을 무한히 생성하고 재활용하는 무한 점프 코어 로직 완성.
- Massive Refactoring: 모호했던 WorldContainer의 책임을 EnvironmentController로 통합하고 SOLID 원칙에 맞춰 구조 대개편
3일동안 처 삽질하다가 드디어 뭔가 나왔다.. 여전히 마음에 드는 건 아니지만 뭐라도 구현돼서 다행이다 .. ㅡㅜ 2주는 무슨 2주..
생각보다 투명창 관련 이슈가 너무 많아서 아직 초짜 개발자로 도전할 건 아니었던 것 같은 느낌도 들지만 뭐 어쩌겠습니까 내가 선택한 길
🛠 구현 상세
1. Frame 기반 뷰 시스템
데스크탑 위젯 특성상, 게임 요소가 바탕화면 아이콘을 가리거나 산만하게 만들면 안 된다.
- 구현: SpriteMask를 루트에 배치하고, 모든 자식 오브젝트(배경, 발판, 캐릭터)가 마스크 내부에서만 렌더링되도록 설정했다.
- 계층 구조:
HamchoWidget (Root) ├─ Frame (SpriteMask) : 위젯 범위 ├─ EnvironmentRoot : Y축이 내려감 └─ HamchoCharacter : 화면 중앙 고정 (실제 이동 안 함)
2. 정밀 착지 및 무한 스크롤
햄초가 점프하면 실제로는 햄초가 올라가는 게 아니라, EnvironmentRoot가 아래로 내려간다.
- Centering Logic: 햄초가 발판에 착지하는 순간, 부드럽게 화면 중앙으로 오도록 AnimationCurve를 사용하여 월드를 이동시킨다.
- 방향 전환: 다음 발판의 X 좌표를 계산하여 햄초가 자동으로 FlipX 되도록 구현, 자연스러운 시선 처리를 돕는다.
- 축소 모드 (Debugging): C 키를 누르면 현재 밟고 있는 발판과 햄초만 남기고 나머지를 숨겨, 집중 모드(혹은 디버깅 모드)로 전환된다.
🔥 트러블슈팅: 마스크가 뚫리는 문제
문제 상황: SpriteMask를 씌웠는데도 배경이나 발판이 마스크 영역 밖(바탕화면)으로 삐져나와 보이는 현상.
해결: Sorting Layer와 Order in Layer가 제각각이라 마스크 인터랙션이 제대로 먹히지 않은 탓이었다.
- 모든 오브젝트의 Sorting Layer를 Default로 통일.
- Sprite Renderer의 Mask Interaction을 Visible Inside Mask로 일괄 설정.
- IMGUI(OnGUI)는 마스크 영향을 받지 않으므로, #if UNITY_EDITOR로 감싸 빌드 시에는 보이지 않도록 처리.
🔮 다음 계획
이제 뼈대는 완벽하다. 살을 붙일 차례다.
- Visual Polish: 임시 스프라이트(네모 박스)를 실제 픽셀 아트 리소스로 교체.
- Score System: 올라간 높이에 비례한 점수 계산 및 UI 연동.
- Sound FX: 점프, 착지, UI 효과음 추가.
💡 회고
별로 복잡하지도 않은 로직이었는데 왤케 오래걸렸는지 모르겠다. 처음에 길을 잘못 들면 계속 거기만 파다보니까 이상해지는 것 같다. 한참 안 될 때는 그냥 다음날 일어나서 하는 게 더 깔끔한데 자꾸 될 것 같아서 고치고.. 고치고.. 하다보니까 걍 산으로 감
'도토리도굴단 > Project: HoP 개발일지' 카테고리의 다른 글
| [🖥️Project: HoP] #4 Windows Low-Level Hook과 전역 입력 감지 (0) | 2025.12.11 |
|---|---|
| [🖥️Project: HoP] #3 애니메이션 시스템과 O(1) 최적화 (0) | 2025.12.08 |
| [🖥️Project: HoP] #2 위치 저장과 멀티 모니터 (0) | 2025.12.08 |
| [🖥️Project: HoP] #1 투명 윈도우와 위젯 시스템 구축 (0) | 2025.12.04 |
| [👾Project: PokeIdle] #1 투명 창 만들기 (0) | 2025.08.19 |