[Unreal 4.20] 애니메이션 블루프린트에 캐릭터 가져오기.






 
블루프린트 애니메이션은 메인 애님그래프에 State Machine을 이용해서 상태에 따라 다른 애니메이션을 재생해 주는 등 여러가지 기능을 제공합니다만, 으레 그렇듯이 구조가 익숙하지 않은 사람에겐 이 상태를 업데이트할 부분을 찾는게 곤란해지기도 합니다.(이 글을 작성하기 바로 직전의 저처럼요.)


그런고로, 간단하게 애니메이션을 데려와서 상태별로 애니메이션이 변경하는 소스를 일부 발췌하여 올립니다.




애니메이션 블루프린트 탭을 가면 볼 수 있는 애님 그래프 구조.


스테이트 머신은 스테이트 머신 새로 추가로 넣을 수 있습니다.

해당 스테이트 머신을 더블 클릭해서 들어가면 



 

이런 황량한 핀이 나오는데,

 
스테이트 추가로 상태를 추가할 수 있습니다.




만들어진 스테이트 Entry를 해당 스테이트를 연결해 시작점을 만들어주고,


 
 다른 스테이트를 추가해 연결해줌으로서 스테이트간 이동을 만들어 줄 수 있게 됩니다.
 
테스트로 구성한 스테이트.

해당 테스트 스테이트들은 각자의 스테이트가 애니메이션을 가지고 있을 수 있으며, 조금 복잡한 몽타주도 가질 수 있는걸로 알지만, 저는 기본 애니메이션만 넣었습니다.



해당 테스트 스테이트들을 잇는 선 옆에 서로의 상태를 변경하는 bool을 구하는 Can Enter Transition이 있는데, 해당 아이콘을 더블 클릭하면,



 
 상태를 전환할 수 있는 내용을 그래프로 만들 수 있습니다.


하지만, 정작 Character를 안가져 왔네요.

 
간단히 사용할 CharacterTest 입니다. 컨트롤러로 Possess 했을때 bPress 변수가 바뀌도록 세팅해뒀습니다.


 

사용할 스켈레톤 정보와 애니메이션 클래스를 가져왔습니다.



애니메이션 블루프린트는 기본적으로 해당 데이터를 사용하고 있는 부모 클래스를 가지고 있는데, 해당 클래스를 가장 쉽게 가져오는 방법은 "Get Owning Actor" 를 사용하는 방법입니다.

이 노드는 자신을 가지고 있는 액터를 반환하기 때문에 자신을 가진 상위 액터, 즉 캐릭터를 들고 올 수 있게 됩니다.


해당 캐릭터에서 필요한 변수를 뽑아(저의 경우엔 bPress로 확인합니다) 해당 변수를실시간으로 확인할 수 있는 Blueprint Update Animation 이벤트에서 가져와 사용하였습니다.

 
 받은 액터를 캐릭터로 형변환해서 필요한 변수를 등록한 후, 스테이트 머신을 확인할 수 있는 변수에 등록했습니다


이렇게 해서 캐릭터에서 키를 받았을때 애니메이션 스테이트 머신을 변하게 하는 예제를 작성해보았습니다.

참고자료
스테이트 머신 언리얼 레퍼런스 문서.
Key Press 애니메이션 과거 버전 질문글 
Get Player Character in Animation Blueprint - AnswerHub


댓글

이 블로그의 인기 게시물

[Unity2018.3.0f2] 코루틴 - 유니티에서 While문 멈추지 않고 돌리기.

[Unreal] AnimNotify 애님 노티파이 시스템.