본문 바로가기
Develop/Unreal Engine

[Unreal Engine] 애니메이션 블루프린트 생성 및 연결

by Tarra 2023. 2. 15.

 


개인 공부 후 자료를 남겨놓기 위한 목적이므로,
생략되거나 오류가 있을 수 있음을 알립니다.

 

 

1. 플레이어 캐릭터 생성하기

2. 플레이어 캐릭터에 움직임 추가하기

3. 애니메이션 블루프린트 생성 및 연결

4. 애니메이션 몽타주를 이용한 공격 모션

 

 

 


고블린의 애니메이션 블루프린트를 직접 만들어보도록 합시다.

 

콘텐츠 브라우저 에서 원하는 폴더로 이동 후, 추가/임포트 를 눌러 애니메이션 블루프린트 를 클릭합니다.

 

 

어떠한 스켈레톤에 지금 만드는 애니메이션이 적용될 것인지 고릅니다.

 

우리는 고블린에 대한 애니메이션 블루프린트를 만들 것이므로, EnemyGoblin.Skeleton 을 선택합니다.

 

해당 애니메이션 블루프린트의 이름은 BP_MyAnimation 으로 하겠습니다.

 

처음 서있을 때와 달리기를 시작할 때의 애니메이션을 섞어주기 위해,

 

콘텐츠 브라우저에서 블렌드 스페이스를 추가해줍니다.

 

 

고블린의 애니메이션을 만들 것이므로, 스켈레톤은 EnemyGblin_Skeleteon 을 선택합니다.

 

 

걷기 / 달리기를 섞은 블렌드 스페이스이므로, 이름은  BS_IdleRun 으로 하였습니다.

 

 

해당 블렌드 스페이스를 더블클릭하여 열어줍니다.

 

애니메이션의 축 설정을 다음과 같이 설정해줍니다.

 

 

아래의 창이 보이실겁니다.

 

이 창은 x축과 y의 값이 바뀔 때의 애니메이션 효과를 지정하는 용도로 사용됩니다.

 

 

우리는 속도가 0일 때, 캐릭터가 멈춰있고, 속도가 나기 시작하면서 걸어가는 모션을 만들어 줄 것이므로,

 

왼쪽의 Idle을 좌표의 가장 아래 배치, 이후 걷기, 달리기 순으로 배치해줍니다.

 

 

초록색 점을 이동시켜보면, 해당 속도에 따른 캐릭터의 애니메이션 과정을 미리 확인할 수 있습니다.

 

 

만약 방향에 따른 우측이동, 좌측 이동에 대한 애니메이션 에셋이 따로 존재한다면, Direction에 맞추어 배치해주면 됩니다.

 

배치를 완료하였으므로 저장버튼을 눌러 BS_IdleRun 을 완성해줍니다.

 

이제 다시 돌아와 아까 만든 애니메이션 블루프린트를 열어줍니다.

 

 

 

우리는 달리기와 점프를 만들 것이기 때문에

 

내 블루프린트 에서 변수에 추가 버튼을 눌러 두 가지 변수를 추가합니다.

 

 

플로트 변수인 Speed 와 블리언 변수인 IsInAir? 변수를 추가합니다.

 

AnimGraph 탭에서 오른쪽 버튼을 눌러 스테이트 머신을 추가합니다.

 

 

 

 

💡스테이트 머신이란?

스켈레탈 메시의 애니메이션을 일련의 스테이트로 분리해 그래프로 표시하는 머신입니다.

 

 

 

스테이트 머신이 생성되었다면 사람 아이콘을 끌어 최종 애니메이션 포즈와 연결한 뒤,

 

더블클릭하여 상세 페이지로 이동합니다.

 

 

스테이트 머신의 상세 페이지입니다.

 

 

우측 하단에 우리가 방금 제작한 IdleRun 파일을 확인할 수 있습니다.

 

해당 파일을 끌어 Entry 옆에 배치해주도록 합니다.

 

Entry 옆의 화살표를 끌어 BS_IdleRun과 연결해줍니다.

 

BS_IdleRun 을 더블클릭해 해당 노드에 접근해줍니다.

 

다음과 같은 화면을 발견할 수 있는데, 현재 속도가 BS_IdleRun에 들어가지 않고 있으므로,

 

 

 

좌측에 아까 만들어둔 변수를 끌어와 BS_IdleRun 에 연결해줍니다.

 

(해당 캐릭터는 방향에 대한 애니메이션이 따로 없으므로 Direction은 연결해 주지 않아도 됩니다.)

 

 

이번엔 이벤트 그래프로 이동합니다.

 

이벤트 그래프에서 이벤트를 발생시켜 애니메이션을 재생한다고 생각하면 편합니다.

 

다음과 같이 로직을 짭니다.

 

 

해당 이벤트 그래프의 상세 내용은 다음과 같습니다.

 

[PawnOwner가 유효한지 먼저 확인합니다.]

 

 

[현재 캐릭터가 공중에 떠 있는지 확인합니다.]

 

 

[공중에 떠 있지 않다면, 해당 속도값을 추출해 Speed에 세팅합니다.]

 

 

컴파일후 저장을 하면, 캐릭터가 이제 서있고, 걷고, 뛰는 것까지 구현이 완료된 것을 확인할 수 있습니다.

 

 

이제 점프를 추가해보도록 합시다.

 

점프중인지는 위의 로직을 이용, IsInAir? 를 통해 공중인지를 파악할 수 있으므로,

 

AnimGraph 만 추가해주면 됩니다.

 

각 에셋을 다음과 같이 배치합니다.

 

 

직관적으로 알 수 있듯이.

 

걷는 모션에서 점프에 들어가고 ⇒ 낙하 ⇒ 착지 모션 후 다시 Idle 모션으로 진입하는 것을 볼 수 있습니다.

 

이제 해당 모션이 들어가는 조건을 넣어주면 됩니다.

 

제일 먼저 BS_IdleRunAnim_Jump_In 트랜지션으로 이동합니다.

 

 

점프 모션에 진입하는 조건을 추가해주면 됩니다.

 

 

현재 우리는 IsInAir? 변수를 통해 해당 캐릭터가 공중에 있는지 없는지 파악이 가능하니,

 

IsInAir? 변수를 끌어 해당 노드에 연결해줍니다.

 

 

이번엔 Anim_Jump_In 과 Anim_Fall 사이의 트랜지션입니다.

 

 

해당 트랜지션의 경우 앞선 애니메이션이 끝나면 다음 애니메이션이 나오게 하면 되므로,

 

앞선 애니메이션의 남은 시간을 확인하여 다음 트랜지션으로 이동할 수 있도록 해줍니다.

 

 

우클릭을 통해 Anim_Jump_In 의 남은 시간을 가져오는 노드를 추가합니다.

 

 

노드를 다음과 같이 연결합니다.

 

 

Anim_Fall 과 Anum_Jump_Out 사이의 트랜지션입니다.

 

 

해당 트랜지션의 경우 IsInAir? 의 상태를 확인한 후 아니라면 모션을 시작하도록 해줍니다.

 

 

마지막 Anim_Jump_OutBS_IdleRun 사이의 트랜지션입니다.

 

이전과 똑같이 앞선 애니메이션의 재생이 끝나면 서있기 모션으로 바꿀 수 있도록 합니다.

 

 

모든 연결이 끝났습니다.

 

컴파일과 저장버튼을 눌러 애니메이션을 완성해줍니다.

 

 

애니메이션을 적용하기 위해, 우리가 만들어놓은 BP_Character 를 클릭해줍니다.

 

 

우측의 디테일창에서 Anim Class 를 아까 우리가 만든 애니메이션 블루프린트인

 

BP_MyAnimation 과 연결해줍니다.

 

저장 후, 플레이 버튼을 눌러 제대로 작동하는지 확인합니다.

 

제대로 작동하는 모습을 확인할 수 있습니다!