언리얼엔진/언리얼 C++

데미지 처리와 애니메이션 노티파이

season97 2024. 10. 23. 11:24

 개인적인 공부를 위해 포스팅 하는 글입니다.


 

# 데미지 처리는 반드시 피해를 받는 클래스에서.

ㆍ 데미지처리 같은 경우에는 피해자쪽에서 처리하는 편이 깔끔하다.

ㆍ 만약 가해자 쪽에서 처리를 하면 pvp게임 같은 경우, 가해자가 5분간 독뎀을 적용시켰다고 가정해보자. 근데 걸자마자 나갔다, 그럼 그 독은 어떻게 되는거지???, 이런 고민들을 피해자에서 처리하면 안해도 된다.

ㆍ 가해자.... 아니면 중간에서 관리를 해주는 클래스..? 그런것 보단 그냥 피해자쪽에서 코드를 처리해 주는 편이 깔끔하다.

그냥 테스트를 위해 간단하게 캐릭터 클래스에서 이렇게 변수를 선언해주자

 

ㆍ 국룰 함수도 정의해 주자. 현재는 캐릭터 클래스기 때문에 가상함수로 정의하였다, 지금은 그냥 테스트를 위한 간단한 클래스니까 캐릭터 클래스에서 정의하겠지만, 제대로 할거면 몬스터와 캐릭터 등등 클래스에서 재정의 해주자.

ㆍ 피해를 받는쪽에서 처리할 것 이기 때문에 Attacker를 인자로 받는다. 

 

ㆍ 디파인 클래스에 D를 정의해주고 그냥 로그를 찍어봤다.

 

ㆍ 이제 저번 포스팅에서 한 공격하는 부분에서 처리를 해주면..

ㆍ 로그로 Hp가 깎이는게 잘 보인다. 이제뭐 0이되면 디스폰처리해주거나 하면되겠다

 

ㆍ 기본적으로 언리얼에서 Damage관련 함수들도 정의되어 있으니, 쓸만한 기능이 있다면 활용하는것도 좋아보인다.

ㆍ 보면 얘네도 데미지를 받는쪽에서 처리하고있다.

 

※ 근데 이러면 그냥 칼을 드는 순간에 데미지가 처리될 것이다.

 


 

# 데미지처리 애니메이션에서 관리

ㆍ 이정도 부분에서 collision이 켜졌다가 꺼졌다가 해서 충돌이 되면 데미지를 주고 이렇게하면 좋겠다... 

ㆍ 근데 일단은 충돌은 생각하지 말고 이벤트 처리만 한번 해볼 예정

 

ㆍ 몽타주에서 노티파이를 만들었다면

ㆍ AnimBP에서 호출할 수 있다. 그에따른 액션 처리를 해주면 될 것이다.

 

# 이 작업을 c++을 이용해서 해볼 예정

ㆍ 당연하게도 AnimNotify의 상속을 받는 클래스를 생성할 수 있다.

ㆍ 상속받은 클래스 부분에서 Notify부분을 찾아 오버라이드 해 사용하는 모습

ㆍ 태그 추가

 

 

ㆍ 최종적으로 이런식으로 구조를 설계했다. 지금좀 많이 꼬이긴했는데 추후 수정 예정

 

 

ㆍ 내가 만든 노티파이가 엔진에서 노출된다.

 

ㆍ 태그로 관리하기 위해 분리해뒀고, 지금은 그냥 간단하게 Attack만을 이용해 처리했다.

ㆍ 저 노티파이 부분쯤 데미지가 들어간다.

'언리얼엔진 > 언리얼 C++' 카테고리의 다른 글

AI Controller  (0) 2024.10.24
Post Process  (0) 2024.10.23
(충돌)마우스 하이라이트와 추적과 공격  (0) 2024.10.22
(충돌) C++에서 충돌과 델리게이트  (1) 2024.10.21
(충돌) 프리셋과 트레이스  (0) 2024.10.21