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

 

많은 것을 직접 만들어 써야 하는 유니티와 달리 언리얼 엔진은 데미지 프레임워크조차 제공한다.

 

AActor 클래스에 TakeDamage()라는 함수가 구현되어 있고 오버라이드하여 사용할 수 있다.

 

 

인자는 다음과 같다.

 

DamageAmount

  • 데미지량

DamageEvent

  • 데미지 종류

EventInstigator

  • 공격을 한 가해자이다.
    폰은 공격에 사용한 도구일 뿐 실제 가해자는 플레이어 컨트롤러이다.

DamageCauser

  • 데미지를 입힌 도구이다.
    플레이어 컨트롤러라는 가해자가 폰이라는 도구를 이용해 데미지를 입혔다.

 

 

데미지를 입는 코드에서는 공격을 받을 경우 죽는 애니메이션을 재생하고 Collision을 비활성화한다.

 

 

캐릭터 클래스의 Can be Damged를 false로 변경하면 무적 상태가 된다.

 

 

TakeDamage 이벤트는 발생하지만 데미지 량이 항상 0으로 처리된다.

 

 

데미지를 입었을 때 죽는 애니메이션을 재생하기 위해 죽은 상태인지 저장하는 변수와 함수를 만든다.

 

 

죽은 후에는 애니메이션 처리를 하지 않도록 설정한다.

 

 

애니메이션 블루프린트에서 애님 인스턴스의 IsDead 값이 true면 죽는 애니메이션을 재생하도록 한다.

  • 1번만 재생하기 위해 Loop 옵션은 끈다.

 

 

데미지 및 죽음 처리에 성공했다.

 

'Unreal Engine > 이득우의 언리얼 C++ 게임 개발의 정석' 카테고리의 다른 글

무기를 액터로 분리  (0) 2023.03.09
소켓에 무기 장착  (0) 2023.03.09
디버그 드로잉  (0) 2023.03.09
콜리전과 공격 판정  (0) 2023.03.08
콤보 공격 구현  (0) 2023.03.08
profile

Make Unreal REAL.

@diesuki4

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

검색 태그