언리얼 엔진 5

언리얼엔진5 C++로 정복하기(6) 적 타격

Voitcon 2024. 2. 5. 18:30

적을 타격하는 기능에 대해 간략히 알아보자
takedamage 나 onhit 내장함수도 있지만 박스 트레이서로 타격을 해보자

플레이어가 들 무기 cpp파일에 오버랩 함수를 정의하자. (매개변수는 프리미티브 헤더파일에 매개변수가 작성되있어 복사 하여 붙여넣으면 된다.)

무기에 박스 콜라이더 컴포넌트를 추가하고 UFUNCTION으로 정의하여 박스 오버랩 함수를 AddDynamic 으로 불러오자 (델리게이트 바인딩)

자신의 무기 부분에 무기 칼날의 시작 부분을 BoxTraceStart로 지정 무기 칼날의 끝부분을 BoxTraceEnd 로 지정을 하고 
TArray라는 동적 배열을 이용해 무기를 들고있는 자신은 오버랩 액터로서 제외하고 한번 맞은 대상은 배열에 추가해 투히트가 안되도록 반복문을 사용한다.
다음 UKismetSystemLibrary 를 이용해 박스 트레이스 함수를 사용한다.
 
그 뒤 적을 타격하고 싶으면 BoxHit-> 를 이용해 알맞은 함수를 불러와 타격 이벤트를 발생시키면된다.

참고로 히트 이벤트는 IHITInterface를 이용하면 된다.
IHitInterface에는 헤더파일에 가상함수만 선언해놓고 cpp파일에는 정의를 하지않고

적이되는 cpp에 IHitInterface를 상속받아 GetHit라는 함수를 오버라이드해서 기능을 작성하면 된다.