컨텐츠 브라우저에서 애니메이션 -> 애니메이션 블루프린트를 선택하고
애니메이션을 재생할 스켈레탈 메시를 지정한 뒤 생성해줍니다.
그리고 캐릭터 액터의 스켈레탈 메시 컴포넌트에 애니메이션을 지정하는 곳이 있으므로,
Use Animation Blueprint를 애니메이션 모드로 지정하고 애님 클래스를 방금 생성한 애니메이션 블루프린트로 지정해줍니다.
애니메이션 블루프린트는 이벤트 그래프와 애님 그래프로 애니메이션을 제어할 수 있습니다.
보통 이벤트 그래프에서 애니메이션 재생이 필요한 값을 업데이트합니다.
Blueprint Update Animation 이벤트는 애니메이션 블루프린트에 필요한 값 계산이나 업데이트를 할 수 있도록 매 프레임 실행되는 이벤트입니다.
이벤트 그래프에서 계산된 값을 이용해, 애님 그래프에서 현재 프레임에 대한 스켈레탈 메시의 최종 포즈를 구하게 됩니다. 그 결과 포즈를 매 프레임 스켈레탈 메시에 적용합니다.
W키를 눌러 앞으로 가면 MoveForward 애니메이션을,
S키를 눌러 뒤로 가면 MoveBackward 애니메이션을,
아무 키도 누르지 않고 가만히 있는 상태라면 Idle 애니메이션을 재생하도록 합니다.
키를 눌렀을 때 Axis 값은 캐릭터 액터에서 알 수 있습니다.
MoveForward 입력 축의 Axis Value를 변수로 승격하여 저장해둡니다.
W키를 눌러 앞으로 가면 MoveForward 값은 1,
S키를 눌려 뒤로 가면 MoveForward 값은 -1,
아무 키도 누르지 않고 있다면 MoveForward 값은 0이 나올 것입니다.
그리고 애니메이션 블루프린트의 이벤트 그래프에서 이 값을 가져와
애니메이션 블루프린트에 별도의 변수로 저장해두도록 합니다.
Blueprint Update Animation 이벤트가 실행될 때, Pawn을 가져와 Valid 검사를 한번 해줍니다.
Valid 하다면 제작했던 캐릭터 액터로 형변환을 한번 해주고,
액터에 있는 MoveForward 변수값을 가져와 애니메이션 블루프린트에 별도의 변수로 저장합니다.
애니메이션 로직과 게임 로직은 다른 스레드로 실행되기 때문에,
게임 로직에서 실행되는 캐릭터 액터의 값을 애니메이션 블루프린트에서 직접 참조하여 사용하면
동기화 등 문제가 발생할 수 있습니다.
그래서 애니메이션 블루프린트에 별도의 변수로 값을 보관해둡니다.
애니메이션 블루프린트에 저장된 MoveForward 변수를 이용해 애니메이션 변경을 하도록 합니다.
이때 사용할 수 있는 것이 언리얼에서 제공하는 '블렌드 스페이스 1D'라는 것으로
Axis 셋팅에 변수를 지정하고, 그 변수 값에 따라 재생할 애니메이션을 설정할 수 있습니다.
MoveForward로 이름 짓고 최소/최대 값을 지정해줍니다.
그리고 그래프에서 MoveForward 값에 따라 -1 일때는 Jog_BackWard를 재생하고,
0 일때는 Jog_Idle, 1 일때는 Jog_Forward 애니메이션 시퀀스를 재생하게 설정합니다.
블렌드 스페이스 1D 설정까지 끝낸 뒤,
애니메이션 블루프린트의 애님 그래프를 열어 방금 추가했던 블렌드 스페이스 1D 노드를 추가합니다.
MoveForward 변수에 애니메이션 블루프린트 변수를 넣고 연결해주면 됩니다.
게임 실행 전에 간단히 테스트 해보고 싶다면,
애님 프리뷰 에디터에서 MoveForward 값을 조정해보면 좌상단의 프리뷰에서 확인 가능합니다.