본문 바로가기

언리얼 BluePrint 정리

05/24 학습 정리( GetStateMontageData 함수, Notify의 정의와 종류, Switch )

GetStateMontageData 함수

 

BP_MontageDataAsset에서 입력받은 Index값에 따른 몽타주데이터를 뽑아내는 함수는 만들었는데

State하나에 여러 애니메이션이 있을수 있으니 State값과 Index값에 따른 몽타주 데이터를 뽑는 함수를 만들어보자

입력핀으로 State값과 Index값을 받아 MontageDataMap에서 State라는 Key로 MontageDataAsset을 Find로 찾고

Branch로 Value값이 존재 하지 않으면 아무 내용 없이 함수 종료

존재하면 GetMontageData함수에 입력받은 Index값을 넣어서 몽타주 데이터를 반환 받고 그걸 다시 반환 시키는 방식

State값과 Index값을 받아 반환받은 몽타주를 재생시키는 그래프


Notify의 정의와 종류

 

Notify란 애니메이션 시퀀스 도중의 특정 지점에 이벤트가 발생하도록 알려주는 알림 시스템이다.

예를들어 걷거나 뛰는 애니메이션에서 발이 땅에 닿았을 때 발소리가 나게 해야할 때라던가 총을 장전하는 애니메이션의 

장전 손잡이의 움직임에 따라 소리를 나게 하듯이 말이다.

 

종류는 여러가지 더 많지만 일단 배운 대표적 3개가

스켈레톤 노티파이, AnimNotify클래스로 만든 BP, MontageNotify가 클래스인 노티파이다.

 

  • Skeleton Notify : 기본 생성으로 만들어지는 노티파이로 ABP에서 이벤트로 사용이 가능하다는 장점이 있으나, 애니메이션 시퀀스가 사용하는 스켈레탈 메쉬에 종속되어 있어 같은 동작이라도 다른 스켈레탈 메쉬에서는 사용이 불가
  • AnimNotify BP : Override 함수인 Received_Notify로 어떤 메쉬 컴포넌트가 어떤 애니메이션(입력은 Anim Sequence Base, Anim Sequence의 상위 클래스) 도중에 알림을 설정할지 정할 수 있다. 스켈레톤 노티파이랑은 다르게 애니메이션에 묶여서 좀 더 자유롭게 사용가능하다. 하지만 스켈레톤 노티파이처럼 인터페이스에 의존하는건 동일
  • MontageNotify Class Notify : MontageNotify를 클래스로 생성한 노티파이. 내부에서 직접 사용

ABP에서 사용하는 Skeleton Notify                                                         AnimNotify BP의 Received Notify 함수

몽타주 데이터를 얻어 재생을 시키는데 배치되어 있는 PlayMontageNotify(노티파이 이름은 AttachWeapon으로 설정했지만 트랙에서는 이름 안바뀜)가 알림을 줬을 때 이벤트가 진행되게 몽타주 재생 노드의 OnNotifyBegin 출력핀으로 연결되어 있다.

노티파이의 디테일에서 이름, 색, 트리거가 터질 확률 (0~1로 확률조정)을 변경 가능하다.


 

Switch

 

C++에서도 사용했던 Switch와 동일한 방식 여러 Case로 나누어 입력받은 값에 맞게 진행한다.