목표
- 언리얼 엔진의 컴포넌트 시스템과 블루프린트 인터페이스를 활용한 '1인 레이드' 전투 로직 구현
1. 데미지 시스템 인프라 구축 (Decoupling)
기존의 유니티 개발 방식에서는 클래스 간의 참조가 잦았으나, 언리얼에서는 **블루프린트 인터페이스(Blueprint Interface)**를 사용하여 객체 간의 결합도를 낮추는 방식을 채택했다.
- BPI_Damage 인터페이스 생성: TakeDamage 이벤트를 인터페이스로 정의하여 피격자가 무엇인지(플레이어, 보스, 환경 오브젝트 등) 상관없이 범용적으로 데미지를 전달할 수 있게 설계함.

- HealthComponent (액터 컴포넌트): 체력 데이터를 담는 컴포넌트를 별도로 생성하여 캐릭터 블루프린트에 부착.
- 핵심: Cast To로 클래스를 직접 찾지 않고, 컴포넌트 참조를 통해 로직을 분리하여 유지보수성을 극대화함.

2. 보스 전투 로직 구현 및 트러블슈팅
레이드 보스의 핵심인 투사체 공격 구현 과정에서 겪은 문제와 해결책.
- 보스가 자기가 쏜 총에 맞는 현상:
- 원인: 발사체와 보스의 충돌체(Collision)가 같은 공간에서 생성되어 즉시 충돌 발생.
- 해결: 머리 위에서 발사.

- 투사체 추적 기능 (Homing Projectile):
- Projectile Movement 컴포넌트의 Homing 기능을 활성화하고, Set Homing Target Component에 플레이어의 RootComponent를 연결하여 플레이어를 쫓아오는 미사일을 구현함.

3. 1인칭 FPS 로직 -> 탑다운뷰 전환 (중요!)
기존 템플릿의 FPS 발사 로직을 탑다운 슈팅으로 변환하는 과정에서 가장 큰 두통을 느꼈다.
- 기존 FPS 방식: 카메라가 바라보는 방향(GetCameraRotation)으로 발사.
- 탑다운 전환 방식: 마우스 커서의 월드 좌표(Get Hit Result Under Cursor by Channel)를 기준으로 발사 방향을 결정.
- 수정 로직:
- GetPlayerController를 통해 마우스 커서 위치를 추적.
- Find Look at Rotation 노드를 사용하여 [총구 위치]에서 [마우스 커서가 가리키는 지점(Impact Point)]을 바라보는 회전값을 계산.
- 이 회전값을 SpawnActor의 SpawnTransform에 적용.
- 수정 로직:

오늘의 깨달음
- 인터페이스는 강력하다: Cast To 지옥에서 벗어나니 코드가 훨씬 깔끔해진다.
- 물리는 정직하다: 발사체와 액터의 충돌 프리셋 설정, 그리고 스폰 위치(Offset) 설정은 물리 엔진을 다루는 기본 소양이다.
- 관점의 전환: FPS와 탑다운은 카메라의 제약 여부에 따라 발사 방향 결정 로직이 완전히 달라진다. 이제 카메라가 아니라 '입력'과 '월드 공간'의 관계로 생각하자.
다음 단계
- 보스의 체력 50% 이하 페이즈 전환 로직 구현
- 타격감 보강을 위한 카메라 쉐이크(Camera Shake)와 사운드 피드백 추가
- 전투 루프를 관리하는 비헤이비어 트리(Behavior Tree) 설계
'TIL' 카테고리의 다른 글
| [UE5]콜리젼을 이용한 아이템과 몬스터 행동패턴 (1) | 2026.04.23 |
|---|---|
| [UE5] 타임라인(Timeline)으로 구현하는 부드러운 총기 반동과 에임 복귀 (0) | 2026.04.22 |
| [UE5] 레벨 디자인 실습: 장애물 돌파와 상호작용 공간 (0) | 2026.04.16 |
| [UE5] 에셋 배치부터 실시간 상호작용 시스템까지 (1) | 2026.04.15 |
| [UE5] 블루프린트 액터 이동 및 회전의 모든 것 (1) | 2026.04.13 |