Make Unreal REAL.
article thumbnail
이득우의 언리얼 C++ 게임 개발의 정석

 

현재 데미지는 캐릭터의 TakeDamage() 함수에서 직접 처리하고 있다.

 

ABCharacterStatComponent에 SetDamage() 함수를 만들고 캐릭터의 TakeDamage()에서 이를 호출하는 방식으로 변경해보겠다.

  • 캐릭터는 데미지를 입으면 액터 컴포넌트의 SetDamage()를 호출해야 한다.

 

액터 컴포넌트는 HP가 0이 되면 캐릭터에게 알려야 한다.

  • 컴포넌트가 캐릭터에 의존성을 가지지 않도록 델리게이트를 사용하도록 한다.

 

 

HP를 감소시키는 SetDamage(), 공격력을 가져오는 GetAttack(), HP가 0일 때 발동하는 OnHPIsZero 델리게이트를 선언한다.

 

 

HP가 음수가 되지 않도록 Clamp하고 0이 되면 델리게이트에 등록된 함수들을 실행한다.

 

 

현재 레벨에서의 캐릭터의 공격력을 반환한다.

 

 

캐릭터의 PostInitializeComponents() 함수에서 액터 컴포넌트의 OnHPIsZero 델리게이트에 죽는 애니메이션을 실행하고 충돌을 끄는 람다 함수를 등록한다.

 

 

데미지를 입을 시 즉사하도록 했던 TakeDamage() 함수에서 액터 컴포넌트로 데미지를 처리하도록 수정한다.

 

 

공격 판정을 하는 AttackCheck() 함수에서도 50의 고정 데미지를 캐릭터의 공격력으로 바꾼다.

 

 

캐릭터의 공격력이 10, HP가 100이므로 10번 공격 받으면 죽는 것을 확인할 수 있다.

 

profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그