적의 체력바를 만들고 공격적중시 체력을 깎는 것을 구현해 볼 것이다.
체력을 저장하는 컴포넌트를 만든다.
최대 체력과 현재 체력을 변수로 만든다.
이를 적 블프에서 보일 수 있도록 넣어준다.
넣으면 위와 같이 현재 체력과 최대 체력이 변수로 저장된 것을 볼 수 있다.
WidgetComponent를 부모클래스로 가지는 HealthBarComponent를 만들었다.
위젯 블프인 WBP를 만들고 간단히 체력바를 만든다.
전에 만든 게임에서 많이 해 보았으므로 과정은 생략하겠다.
Enemy 헤더파일에 두가지 타입의 포인터를 넣어준다.
마찬가지로 블프에서 볼 수 있도록 넣어준다.
에디터에서 적의 머리위로 보일 수 있도록 위치를 조정하고 유저 인터페이스의 스페이스를 월드에서 스페이스로 바꿔준다.
아까 만든 AttributeComponent에는 ReceiveDamage과 GetHealthPercent 두 함수를 만든다.
처음은 데미지를 받은 만큼 체력을 깎는 함수이고 두번째는 현재 남은 체력을 전체 체력대비 퍼센트로 나타내는 함수이다.
두 함수의 구성은 위와 같다.
SetHealthBarPercent 함수를 만들어서 위젯에 적용되도록 한다.
데미지를 주는 것과 받는 과정은 언리얼에서 제공하는 TakeDamage와 ApplyDamage를 이용할 것이다.
TakeDamage함수 실행시 아까만든 ReceiveDamage로 체력을 깎고 이후 남은 체력 퍼센트를 위젯에 넣는다.
무기로 때릴 시 데미지가 적용되므로 Weapon.cpp에서 Hit시 ApplyDamage를 동작한다.
적에게 공격 적중 시 체력이 깎이는 것을 볼 수 있다.
'언리얼 - C++ 프로젝트' 카테고리의 다른 글
OpenWorldRpg (16) 패트롤 (0) | 2025.05.23 |
---|---|
OpenWorldRpg (15) 적 사망 애니메이션 (0) | 2025.05.20 |
OpenWorldRpg (13) 랜덤 아이템 소환 (0) | 2025.05.18 |
OpenWorldRpg (12) 프랙처모드 (0) | 2025.05.15 |
OpenWorldRpg (11) Hit Reaction (0) | 2025.05.13 |