언리얼 기초 64 Animation Montage (2)

애니메이션 몬타지 생성

기디언의 컴뱃 애니메이션이 있는 폴더에서 오른 클릭 -> Animation -> Animation Montage -> 기디언 스켈렉톤 선택 후 생성 -> 에셋 명 AM_Gideon_Combat

에셋 오픈후 우측 하단 Asset Brower탭에서 세개의 공격 모션 선택후 좌측 그래프로 드래그인

그래프 오른 클릭 -> New Montage Section -> Attack1, Attack2, Attack3 섹션 태그 생성 각 애니메이션 애셋 앞에 배치(Ctrl + 마우스 휠로 줌업해서 정확히 배치하자)

우측 하단 Montage Sections 에서 Clear 버튼을 눌러 각 섹션이 따로 플레이 되도록 설정

설정 후 Save.

참고로 그래프 좌측에 보면 우리가 애니메이션을 세팅한 슬롯이 DefaultSlot 임을 알 수 있다.

블루프린트 세팅

기디언의 블루프린트(BP_Gideon)을 보면 이전 Enhanced Input 을 통해 IA_Attack 이벤트를 받아 Attack! 스트링을 출력하는 노드가 보인다.

Print String 노드 삭제(Del 키) -> 좌측에서 Mesh Compont 드래그인

이전 우리는 변수 애니메이션 블루프린트나, 컨트롤릭 에셋에서 변수를 만든적이 있다. 이를 그래프로 드래그인 하면 그래프에서 변수를 사용할수 있도록 Get 노드가 만들어진다.

Get 노드 변수안의 데이터를 그래프로 가져오는 노드 일반 변수의 경우 Set 노드도 있다, 일반 변수를 드래그인하면 변수안의 데이터를 읽을건지(Get) 쓸건지(Set)물어보고 해당 노드를 만든다.

BP_Gideon도 블루프린트로서 변수를 활용한다. 오히려 BP_Gideon이 가장 기본적인 블루프린트.

이런 블루프린트의 컴포넌트들도 블루프린트 로직안에선 기본적인 변수로 볼 수있다.

다만 이들은 클래스의 멤버이기에 멤버 변수이며,

컴포넌트나 배열처럼 64비트(또는 254비트)를 넘어서는 큰 데이터는 참조형식(실제 내용이 어디있는지만 저장하는)의 변수이다.

어떤 형식을 가지고 있든 블루프린트에서의 사용법은 동일하다.

이제 그래프에 Mesh라는 이름의 Get 노드를 통해 불러온 Mesh 컴포넌트에게 일을 시키자.

Mesh 컴포넌트가 해줄일은 이 블루프린트에서 쓰는 ABP를 가져오는 일.

Mesh 컴포넌트를 클릭하면 우리가 설정한 내용이 나온다.

과거에는 좌측 상단 BP_Gideon (Self)가 선택된 상태로 설정한 내용이지만 이는 사실 Mesh 컴포넌트를 위한 설정.

따라서 등록해둔 바에 따라. Mesh 컴포넌트는 우리가 쓰는 ABP를 알고 있다(Gideon_ABP_Manny)

Mesh 노드의 Output 핀 드래그 아웃 -> Get AnimInstance 선택

앞서 말했듯 ABP(애니메이션 블루프린트)도 클래스이며 우리의 Gideon_ABP_Manny를 보면 부모가 Anim Instance임을 알 수 있다. ABP는 Anim Instance인것.

우리의 애니메이션 블루프린트 클래스는(다시 말해 Anim Instance는) 애니메이션 몬타지를 플레이할 능력(함수가)이 있다.

해당 함수를 가져와 실행 흐름을 연결하자.

함수의 Input핀에 우리가 만든 AM_Gideon_Combat를 넣자

이제 플레이할 섹션을 정의해주자

참고로 언리얼이 이 로직을 실행하는 동안은 아직 애니메이션 몬타지가 플레이 상태가 아니다. 해당 Montage Play 노드의 다음 실행 흐름에서 섹션을 정의해주면 된다.

애님 인스턴스 아웃풋 핀에서 드래그 아웃 -> Montage Jump To Section 선택

실행 흐름을 연결하고 일단 Section Name핀을 Attack2로 설정 -> Compile -> Save -> 게임 플레이

Attack2 모션이 동작한다.

랜덤 네임 설정

블루프린트 좌측하단 My Blueprint -> VARIABLES -> AttackSection 변수 추가 -> 변수 타입 Name로 설정 -> 설정된 타입명 “Name”앞에 보라색 작은 아이콘 우클릭

아이콘이 변하면서 배열형 변수가 되었다.

AttackSections 변수 선택 -> 우측 Details 패널 -> Default Values -> Attack Sections -> 아래와 같이 추가

AttackSection 변수 드래그인 -> 해당 배열 아웃풋핀에서 Get (a ref) 노드 추가 (또는 Get (a copy)) -> 그래프상의 근처 빈공간 우클릭 -> Random Integer in Range 노드 추가 -> 해당 노드의 Min값 0으로 세팅 -> 해당 노드의 Max값 1로 세팅 -> Montage Jump to Sections 노드 Section Name 핀에 Get 노드 연결

H 키를 눌렀을때 랜덤한 세개의 Attack 애니메이션이 플레이 된다.

다만 H키를 너무 빨리 누르면 이전 애니메이션이 끝나기 전에 이후 애니메이션이 플레이 된다.

다음 포스팅에서 보정하자

댓글 남기기