새소식

Unreal Engine/이론 | 로직 | 연습

[UE4/Theory] 012. 피격 판정 처리 (Collision Overlap / AnimNotifyState)

  • -

!!! NOTICE !!!
이 글은 언리얼의 기본 이론 등을 다루고 있습니다!
학습한 정보를 제가 기억하고 추후에도 사용해두기 위해 기록해둔 내용입니다!
이 점 유의하고 봐주세요!

적의 피격 판정을 처리해보려고 한다.
본인은 사전에 적에 대해서 블루프린트를 만들어 두었다.
혹시라도 이 글을 보는 사람이 있다면
이 글이 조금 난해하더라도 구현 방식에 집중하주었음 한다.
그럼 원하는 정보를 얻을 수 있을 것이다.


적의 피격 판정을 처리하기 위해서
피격 판정용 콜리전을 만들어 넣어준다.

이유는 캐릭터 기반 블루프린트가
기존에 가지고 있는 캡슐 콜리전은
용도에 맞게 변경이 어려울 뿐 아니라 다른 콜리전으로 변경이 복잡하다.

캐릭터의 공격 판정을 처리하기 위해서
마찬가지로 캐릭터에 공격 판정용 콜리전을 만들어 넣어준다.
디버깅을 위해서 Hidden in game 속성을 풀고,
Shape를 통해 눈에 잘 띄게 변경해준다.

 

 

캐릭터 블루프린트가 가지고 있는 기본 캡슐 콜리전에 대해

해당 콜리전의 속성을 조절하여
게임 내에서 겹침을 인식할지, 블록할지, 무시할지를 정할 수 있다.
이 속성은 오브젝트 별로 세세하게 정할 수 있다.

이런 콜리전 속성들은 프로젝트 세팅에서
사전에 정의하여 필요한 분류에 맞게 할 수 있다.

 

 

콜리전 속성중에 Camera에 대해

언리얼 게임 내에서
본인은 카메라를 Spring Arm 이라는 것에
자식으로 할당하여 카메라를 배치한다.

이때, 카메라가 지형지물에 Overlap될 때
스프링은 카메라가 화면을 못담을까봐 판단하여
스프링처럼 캐릭터와의 거리를 줄여서 오브젝트 오버랩을 막는다.

이때의 충돌 설정을 Collision 속정에서 설정해줄 수도 있다.

 

공격 노티파이 설정에 대해

AnimNotifyState 를 상속받는 블루프린트를 생성하고
함수를 오버라이드 하여 다음의 3개를 추가한다.

몽타주에서 노티파이를 추가해주자.
이때, 앞서 만든 블루프린트로 추가하면
노티파이가 발생하는 영역을 지정할 수 있다.

이렇게 설정하면 해당 영역동안 첫 사진에서 오버라이드한 함수 Begin, End가 호출된다.

 

위에서 만든 노티파이는
AnimNotifyState 에서 노드를 구성하여
공격시의 콜리전 활성화, 비활성화를 제어할 수 있다.

다음은 해당 노티파이 시작과 끝에 대해
실행할 작업을 노드로 구성한 모습이다.

이때의 실행할 작업은
캐릭터 공격시의 캐릭터의 콜리전 충돌 여부를 키고 꺼주는 작업이다.

 

이후에 플레이어 캐릭터의 피격 콜리전 / 적의 피격 콜리전에
Tag를 하나씩 달아주었다.

플레이어 캐릭터의 공격 콜리전 이벤트 중
Begin Overlap 이라는 이벤트가 존재한다.

이는 콜리전과 콜리전이 겹쳤을 때 발생하는 이벤트로,
이곳에서 데미지 처리를 해줄 것이다.

Apply Damage 라는 노드로
데미지를 받았다! 라는 이벤트를 일으킬 수 있다.


Apply Damage 라는 이벤트를 받은 상대 입장에서
AnyDamage 라는 노드로
데미지를 받았을 때의 순간을 처리할 수 있다.

Hp Decrease 노드는 본인이 따로 만든 노드이다.

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.