체력 컴포넌트
발사체가 무언가를 맞췄을 때 데미지를 입어야 한다.
따라서 데미지에 앞서 체력을 설정하기 위해 체력 컴포넌트 클래스를 생성해보자.
체력은 트랜스폼이나 어태치 기능이 필요없기에, 액터 컴포넌트 클래스로 생성해주자.
그리고 이어서 최대 체력과 현재 체력을 표시할 변수를 선언해주자.
우선은 체력을 최대 체력에서 시작하고, 데미지를 입으면 감소하게 된다.
따라서 BeginPlay에서 체력을 최대 체력으로 설정해주자.
이제 해당 컴포넌트를 블루프린트 클래스에서 탱크와 터렛에 추가해주자.
최대 체력은 언리얼에서도 편집이 가능하다.
이제 데미지에 대한 내용을 구현해야한다.
우선 언리얼 엔진에는 데미지 기능 또한 존재하며, 모든 액터는 데미지 이벤트를 상속받는다.
여기서 전 강의에서의 OnComponentHit과 같이 멀티캐스트 델리게이트인 OnTakeAnyDamage를 사용하게 된다.
따라서 우리는 데미지 이벤트를 발생하면 위 델리게이트는 브로드 캐스트하여 바인딩된 함수를 호출하게 된다.
여기서 데미지 이벤트 발생은 UGameplayStatics에 속한 ApplyDamge 함수를 통해 하게 된다.
우선 바인딩 콜백 함수를 생성해주고, 이어서 바인딩 작업을 해주자.
여기서도 마찬가지로 인풋 매개 변수가 자세해야 한다.
우리가 사용할 인풋 매개 변수는 데미지를 입은 액터, 실제 데미지, 데미지 타입, 데미지를 관리하는 컨트롤러, 데미지를 발생시킨 액터이다.
여기서 데미지 타입이 다소 생소한데, 이는 언리얼 엔진에 해당 개념이 존재한다.
이는 타입에 따라 다르게 작동 가능하며, 독에 의한 데미지인지 폭발에 의한 데미지 인지 등을 체크하는 것이 가능하다.
그리고 주의해야 할 것이 이번 델리게이트는 헬스 컴포넌트에 있는게 아니라 액터에 존재한다.
데미지 이벤트가 액터에 존재하기 때문이다.
따라서 현재 컴포넌트의 소유자에 GetOwner()를 통해 접근해줄 필요가 있다.
이후는 전 강의에서와 똑같이 AddDynamic 함수를 이용하여 바인딩해주자.
이제 데미지 이벤트를 발생시키는 작업을 해야하는데, 이는 다음 강의에 이어서 하게 된다.
'Unreal > Udemy 강의' 카테고리의 다른 글
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-28 (0) | 2024.04.09 |
---|---|
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-27 (0) | 2024.04.08 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-25 (0) | 2024.04.08 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-24 (0) | 2024.04.08 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-23 (0) | 2024.04.06 |