메카닉 딥다이브 프로젝트 일지: 8일차

March 31, 2026 (1mo ago)

0 views

오늘 목표

  • 락온
  • 피격판정
  • 구르기

EnemyBase - (Humanoid)Boss

락온을 다 구현하고 나니 락온 조건 중에 '살아있는' '유효한 적'이 있어서 테스트하기가 어려웠음

그래서 어차피 만들어야하는거 만들었음

EnemyBase에 추가한 것:

  • BeginPlay에 체력 초기화
  • 변수로 bShowBossHealthBar, EnemyName 추가해서 자식한테 물려주기

그런 다음 Enemies/Humanoid/BP_Genichiro 추가

  • 기본 스켈레탈메시 추가
  • 3인칭 견본 프로젝트에서 Damage관련 로직 따오기 + BPC_Health랑 연결해주기
  • 적 피통이랑 이름은 소울라이크 문법을 계승해 보스일 때만 노출하고, 노출 시에 캡쳐처럼 화면 중앙 하단에 띄워주기로 함 이걸 위해선 UI_BossHealthBar(UserWidget), BP_PlayerController 두 군데서 관리해야함

UI_BossHealthBar

  • Vertical Box로 위치 잡아주고 BossName Text박스랑 HP용 ProgressBar 추가
  • 변수로 필요한 것: 적의 최대체력, 현재체력, 이름
  • BPC_Health 저장용 변수 TargetHealthComp, DisplayName 생성
  • 이 위젯은 적이 들고있지 않고 PlayerController가 들고 있으나, HP 변경은 적이 맨처음 알려줘야함
  • 함수로 직접 현재체력과 최대체력을 props drilling하기보다 이벤트로 호출만 이어주고 값 변경 구독은 TargetHealthComp에서 직접 가져다 쓰기
  • 이 위젯 등록은 각 적 BP BeginPlay에서 걸어주기

BP_PlayerController

  • 로드되면 유효성 검사하고 뷰포트에 hidden 상태로 위젯 추가함
  • 적 BP에서 RegisterBossHealthBar(BossEnemy) 호출하면 UI 위젯에서 쓸 name이랑 healthComponent 설정해주고 hidden이었던 위젯을 visible로 바꿈

락온

테스트하기 위한 적을 만들었으니 락온을 걸어보자

ㅋㅋ 값 설정이 잘못된 것 같다

  • 락온 해제 문제는 ValidateLockedTarget의 잘못된 BreakLockOn 분기였음
  • 카메라 고정은 정상화됨
  • 캐릭터가 기우는 문제는 UpdateLockOnRotation에서 Yaw를 Pitch에 잘못 연결했던 문제였음