본문 바로가기
공부/Unreal Engine 4

[언리얼4] 키입력&캐릭터모션변경

by MY블로그 2023. 10. 26.

이전까지는 캐릭터를 생성하고 에셋을 적용시켜 키입력으로 이동&회전을 할 수있도록 하였습니다.

이번에는 캐릭터에 Animation 모션을 적용시키고 동시에 블렝딩하여 키입력에따라

캐릭터의 건기와 뛰기의 모션을 적용해 봅니다.

 

1. 키입력 추가

기존에 축매핑의 키입력을 추가한것과 다르게 액션 매핑을 통하여 키입력을 추가합니다.

축매핑 : D3D 에서 KeyPress

액션매핑 : D3D 에서 KeyDown & KeyUp

왼쪽 Shift 키가 눌려있는지 눌려지있지않은지에 따라 걷기,뛰기 상태로 변경할것!

2. 애니메이션 추가

콘텐츠 브라우저 / 우클릭 / 애니메이션 / 블렌드 스페이스 1D

블렌드 스페이스 1D BP를 생성하도록 합니다.

생성된 BP의 좌측에서 Axis Setting에서 최대값을 임의로 설저하고

최소값(0) ~ 최대값(임의 1000) 사이에 기본(Idle), 걷기(Walk), 뛰기(Run) 애니메이션을 적절한 위치에 배치합니다.

Axis의 값은 그대로 캐릭터의 속도값으로 사용될 것이기 때문에

속도가 0일때는 이동하지않고 그자리에서 기본모션을 실행하고,

걷기가 실행될때는 300의 속도로 이동하며 걷기모션을 실행하며,

속도가 700에 가깝거나 넘어갔을경우는 뛰기모션을 실행하도록 할것이기에 임의로 배치하였습니다.

1D의 애니메이션 BP가 준비되었다면

메인 애니메이션BP에 추가하도록 합니다.

추가할때는 플레이어의 속도 = 1D 애니메이션 BP의 축의 값과 매치시킬것이기때문에 변수를 추가합니다.

3. 키입력 적용 & 이벤트 그래프 설정

블렌딩된 애니메이션과 변수가 준비되었다면 마지막으로 키입력에 따라 변수의 값을 변경시킬수 있도록 해주고,

변경된 값이 애니메이션에 적용이 되도록 이벤트 그래프를 작성 합니다.

 

우선 이전 키입력 이벤트와 같은 방식으로 액션매핑 키입력(PressRun)을 추가한 이벤트를 추가합니다.

!해당 클래스(this)가 타깃이 될수있도록 컴포넌트에서 캐릭터무브먼트를 드래그앤 드랍으로 가져와

타깃으로 연결시켜줍니다!

액션매핑 입력 액션에는 2개의 실행이 가능하도록 되어있습니다.

1. Pressed = D3D 에서 KeyDown과 같습니다. 즉, 키가 눌렸을때!

2. Released = D3D 에서 KeyUp과 같습니다. 즉, 키가 눌리고있지 않을때!

키의 액션에 따라 축과 매칭된 변수의 값(Max Walk Speed)의 값을 세팅하도록 합니다.

!1D애니메이션 BP에서 Walk는 300에 두었기 때문에 걷는상태일때는 변수의 최대값이 300이 넘지않도록 세팅

 

변수의 값이 잘 대응되었다면 메인 애니메이션 이벤트 그래프를 작성합니다.

메인 애니메이션 BP의 이벤트 그래프의 기본 2개 노드는 처음접하기 때문에 D3D로 비유하여 코멘트를 기입합니다.

Blueprint Update Animation 이벤트는 캐릭터에 애니메이션이 있다면 매프레임 실행되는 이벤트 입니다.

해당이벤트를 실행할때 오브젝트가 유효한지를 확인하는 함수를 통해서 애니메이션을 실행시켜줍니다.

추가적으로 유효판단 함수를 2회사용한이유는 우선 Try Get Pawn Owner를 통하여 값을 받아왔을떄

True이변 뒤의 작업을 실행하도록하고(처음 is Vaild) 다음으로는 인스턴스화된 객체가 있다면 해당객체를 적용시키고 아니라면 객체가 적용되지않았을경우(두번째 is Vaild) 맨처음한번 적용(세팅)한다음 Has Player함수를 실행합니다.

위처럼 이벤트 그래프를 완성한뒤 실행을 한다면

좌Shift 키를 누르지 않은 채로 WSAD 키를 통하여 이동한다면 최대속도는 300이며

변수에 의하여 애니메이션의 축또한 300을 초과한 값으로 세팅되지 않기떄문에 Walk 애니매이션이 재생 됩니다.

 

반대로 좌Shift 키를 누른 채로 WSAD 키를 통하여 이동한다면 최대속도는 1000이 되기 때문에

애니메이션의 축은 300에서 지속적으로 상승하여 쉬프트키를 누른순간(300)지점에서 1000으로 보간되며 상승합니다.

 

댓글