IronBird 개발일지 #6
메인화면 + 점수 시스템 + 게임오버/클리어
MainMenuHUD · GameState · DrawText · FInputModeGameAndUI
🎯 목표
게임의 시작부터 끝까지 순환 구조를 완성한다. 메인화면 → 게임플레이 → 게임오버/클리어 → 메인화면으로 돌아오는 흐름과 점수 시스템을 구현한다.
메인화면 → GAME START → 게임플레이 → GAME OVER/CLEAR → MAIN MENU → 메인화면
🔧 구현 내용


점수 시스템 구조
Enemy->bKilledByPlayer = true;
Enemy->ReturnToPool();
// Enemy ReturnToPool()에서
if (bKilledByPlayer)
GS->AddScore(100);
// Boss 처치 시
GS->AddScore(1000);
🔥 트러블슈팅
문제 1. 메인화면 버튼 클릭이 동작하지 않음
원인: BeginPlay에서 FInputModeUIOnly를 설정하면 모든 마우스 입력이 Slate UI로만 전달된다. 이 모드에서는 IsInputKeyDown이 항상 false를 반환한다.
해결: FInputModeGameAndUI로 변경. 게임 입력 시스템과 Slate를 동시에 활성화해 IsInputKeyDown이 정상 동작하게 했다.
+ FInputModeGameAndUI InputMode;
+ InputMode.SetHideCursorDuringCapture(false);
문제 2. 적 처치해도 점수가 오르지 않음
원인: Bullet 메시가 NoCollision이라 Enemy::OnOverlapBegin이 절대 호출되지 않았다. bKilledByPlayer 플래그 세팅 없이 ReturnToPool만 호출되어 점수가 항상 0이었다.
해결: Bullet Tick 수동 쿼리에서 Enemy->ReturnToPool() 직전에 bKilledByPlayer = true 추가.
Enemy->ReturnToPool();
문제 3. HDR Cubemap 텍스처를 배경 Plane에 적용 불가
원인: milkywaysky_HDR는 Cubemap 형식이라 일반 TextureSample2D 노드와 타입 불일치. Plane 메시에 직접 적용 불가.
해결: Background_Plane 제거. 레벨의 SM_SkySphere에 Galaxy_Mat_Inst 적용 후 Tick에서 X축 회전으로 별이 흘러가는 스크롤 효과 구현.
💡 배운 것
• FInputModeUIOnly는 게임 입력을 차단한다. HUD에서 마우스 클릭을 감지하려면 FInputModeGameAndUI를 써야 한다.
• 충돌 감지 흐름이 바뀌면 플래그 세팅 위치도 같이 바뀌어야 한다. 수동 쿼리 방식은 이벤트 방식과 호출 경로가 다르다.
• HDR Cubemap은 Skybox 전용이다. 일반 메시에 적용하려면 별도 노드가 필요하다.
• GameMode Tick은 기본 비활성이다. PrimaryActorTick.bCanEverTick = true를 생성자에서 명시해야 한다.
📌 다음 작업
[IronBird #7] 난이도 조정 + 하트 아이템 + BGM + 이펙트 + 틸팅 + HUD 정리
게임 완성도를 높이고 Android 빌드 준비.
'개인프로젝트 > IronBird' 카테고리의 다른 글
| [IronBird #8] 드로우콜 최적화 시도 - PC 프로파일링 결과 분석 (0) | 2026.06.05 |
|---|---|
| [IronBird #7] BGM + 이펙트 + 하트 아이템 + 틸팅 + UMG 메인화면 (0) | 2026.06.02 |
| [IronBird #5] 보스 페이즈 + 적 3종류 + 충돌 시스템 구현 (0) | 2026.05.28 |
| [IronBird #4] 적 스폰 시스템 구현 (0) | 2026.05.28 |
| [IronBird #3] Object Pool 구현 - Spawn/Destroy 비용 제거 (0) | 2026.05.28 |