[🖥️Project: HoP] #5 무한 점프 시스템

2025. 12. 13. 23:52·도토리도굴단/Project: HoP 개발일지

🚀 오늘의 작업 요약

  • 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
'도토리도굴단/Project: HoP 개발일지' 카테고리의 다른 글
  • [🖥️Project: HoP] #4 Windows Low-Level Hook과 전역 입력 감지
  • [🖥️Project: HoP] #3 애니메이션 시스템과 O(1) 최적화
  • [🖥️Project: HoP] #2 위치 저장과 멀티 모니터
  • [🖥️Project: HoP] #1 투명 윈도우와 위젯 시스템 구축
happy124219
happy124219
happylaboratory 님의 블로그 입니다.
  • happy124219
    윤아 실험실
    happy124219
  • 전체
    오늘
    어제
    • 분류 전체보기 (116)
      • 공부방 (103)
        • Unity UI (2)
        • C# 알고리즘 (3)
        • C# 에러발생 로그 (7)
        • 내일배움캠프 Unity 9기 TIL (91)
      • 도토리도굴단 (9)
        • Project: HSR 개발일지 (3)
        • Project: HoP 개발일지 (6)
      • 개인 프로젝트 (1)
        • Project: BloomFolk (1)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Unity게임개발
    스파르타내일배움캠프TIL
    c#문법
    게임개발
    내일배움캠프
    유니티
    내일배움캠프후기
    유니티트랙후기
    스파르타내일배움캠프
    도망개발일지
    도망공부일지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
happy124219
[🖥️Project: HoP] #5 무한 점프 시스템
상단으로

티스토리툴바