Unreal Engine

[UE]MultiSphereTrace 한번만 체크하기

Aostols 2022. 4. 27. 22:36
반응형

https://aostols.tistory.com/7

 

[UE]근접공격 충돌 체크(MultiSphereTrace)

무기를 이용한 공격시 충돌 체크 무기 애니메이션 재생시 애니메이션의 특정 영역(무기 및 애니메이션의 일정 부분)에서만 충돌 체크를 해야 합니다. UnrealEngine 에서 제공하는 Paragon 캐릭터 Grux

aostols.tistory.com

 

이 포스트에서 근접 충돌 체크를 확인하였는데 이때 기본적으로 Tick 에서 체크하기 때문에 다중 체크가 되게 됩니다.

이를 막고자 해당 포스트에서는 임시적인 처리를 하였는데 보다 확실한 방법으로 처리 하고자 합니다.

간단하게 설명하자면 충돌 체크한 객체를 저장해 두고 또 충돌하면 무시하자 입니다.

1. Actor Array를 만들어 두자.

2. 충돌을 하게되면 이 Array 에 충돌객체가 있는제 확인

3-1. Array 에 없다면 충돌처리하고 Array 에 넣어둔다.

3-2. Array에 있다면 이후 무시

4. 모든 상황이 끝나면 Array를 비워준다.

 

기존 만들었던 객체에서 HitActors 라는 ActorArray 를 하나 만들어 줍니다.

 

이제 MultiSphereTrace 이후 ForEachLoop을 수행할때 하나씩 받게되낸 Actor를 기존에 만들었던 HitActors 와 비교하여 이미 가지고 있는지를 체크합니다.

Find로 찾아서 -1이라면 없는것이기 때문에 HitActors에 넣어주고 이후 처리를 하게 됩니다.

추가적으로 종료처리를 해야 하는데 Anim Notify State객체는 기능동작을 하는 메소드가 크게 3가지 있습니다.

Received_Notify_Begin

Received_Notify_Tick

Received_Notify_End

여기서 Received_Notify_End를 Override해줍니다.

 

단순히 HitActors 를 Clear 해주는 구조인데 혹시 모를 상황을 대비해서 super 의 Received_Notify_End 를 호출해 줍니다.

 

호출 방법은 메소드 시작점에 우클릭 하여 Add call to parent function를 선택해 주면 됩니다.

이후 노드들을 잘 연결해 주면 됩니다.

 

기존 히트판정

 

수정 후 히트 판정

테스트를 해보게 되면 잘 동작하는 것을 확인 할 수 있습니다.

 
반응형

'Unreal Engine' 카테고리의 다른 글

[UE]근접공격 충돌 체크(MultiSphereTrace)  (0) 2022.04.27