본문 바로가기

Unreal/Udemy 강의

Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-20

액터에 데미지 입히기

우리가 만든 총알은 데미지를 입혀야 한다.

따라서 이번엔 액터에 데미지를 입히는 방법을 구현해보자.

먼저 데미지를 입는 대상이 있어야 하므로, 우리가 만든 캐릭터를 월드에 배치해주자.

 

다음으로 총알의 데미지를 미리 설정해주자.

일단은 10으로 설정을 하였다.

 

이제 데미지 이벤트를 사용해야 하는데, 먼저 관련 헤더파일을 선언해주자.

 

데미지 이벤트에 대한 것은 2가지로 FRadialDamage와 FPointDamage이다.

FRadialDamage 데미지는 방사형과 같은 데미지를 의미하며, 수류탄 같은 것이 해당될 것이다.

FPointDamage 데미지는 단일 데미지를 의미하며, 총알과 같은 것이 해당되기에 우리가 사용할 데미지 이벤트이다.

 

먼저 우리는 히트된 액터에 대해 알 필요가 있다.

만약 히트된 액터가 없는데 데미지 이벤트에 관해 접근하면 크래시가 날 수 있을 것이다.

히트된 액터는 간단하게 Hit.GetActor()를 통해 얻을 수 있다.

 

이제 FPointDamageEvnet 변수를 선언해주자.

해당 변수는 구조체 형태로, 데미지, FHitResult 값, 사격방향, 그리고 데미지 타입을 받게 된다.

앞에 3가지는 이미 구현했던 값이기에 알고 있지만 데미지 타입이 생소할 수 있다.

데미지 타입은 마치 독으로 인한 데미지인지, 화상으로 인한 데미지인지 등을 나타낸다.

우리는 사용하지 않기에 null을 할당해주면 된다.

 

이후 HitActor를 통해서 TakeDamage 함수를 호출한다.

해당 함수는 인자로 Damage, 방금 선언했던 DamageEvent, 컨트롤러 값, 데미지를 주는 액터를 할당하게 된다.

컨트롤러 값은 OwnerPawn을 통해 얻었던 OwnerController 값을 전달해주면 되고, 데미지를 주는 액터의 경우 현재 클래스인 Gun이기 때문에 this 를 할당해주면 된다.

 

이제 다음 강의에서 월드에 배치한 캐릭터가 데미지를 받는 작업을 이어서 하게 된다.