본문 바로가기

3D 게임 개발이 처음이어도 언리얼 블루프린트로 쉽게 배우는 3D 게임

13일차 250730 (강의 3-2)

캐릭터에 생동감 부여하기(애니메이션)

애니메이션 블루프린트

애니메이션 블루프린트를 생성하고 캐릭터에 ABP_Main를 적용시켜준다.

캐릭터 블루프린트 - 디테일 - 애니메이션에 있다.

스테이트 머신을 생성한다.

스테이트 머신을 더블 클릭하여 들어가준 후 대기상태의 애님, 떨어지는 중의 애님 애셋을 드래그하여 배치하고 연결해준다.

트랜지션 룰을 더블 클릭하면 애님이 바뀌는 조건을 설정 해줄 수 있다.

애니메이션 블루프린트의 이벤트 그래프에서 캐릭터가 떨어지는 중인지를 판단하는 로직을 구현한다.

BlueprintUpdateAnimation은 애니메이션이 실행되고 갱신될 때마다 이벤트를 호출한다.

Try Get Pawn Owner는 이 애니메이션 블루프린트를 가지고 있는 폰을 가져오는 노드이다.

Cast To BP_Character를 통하여 BP_Character가 가지고 있는 Character Movement 컴포넌트의 기능중 Is Falling를 이용하여 떨어지고 있는가를 판단하여 나온 값을 Is Falling 변수에 저장한다.

BP_Character의 부모가 폰이므로 Try Get Pawn Owner에서 BP_Character를 가져올 수 있는 것이다.

다시 스테이트 머신의 대기 상태 - 떨어지고 있는 상태의 트랜지션 룰로 가서 변수를 연결해 준다.

애니메이션 블렌드

대기 - 걷기 - 뛰기 의 애니메이션은 캐릭터의 속도에 따라 결정이 되는데 이 때 사용하면 좋은 기능이 애니메이션 블렌드다.

애니메이션 - 블렌드 스페이스를 생성한다.

X축의 이름을 Speed로 수정하고 Idle, Walk, Run 애님을 각 속도 값을 넣어 배치해준다.

스테이트 머신으로 돌아와서 만든 블렌드 스페이스를 드래그하여 배치하고 연결한다.

배치한 BS_Idle를 더블 클릭하면 스피드를 입력할 수 있는데 캐릭터가 움직일 때의 스피드 값을 받도록 구현하자.

애니메이션 블루프린트의 이벤트 그래프로 가서 캐릭터 무브먼트의 기능중 Get Velocity를 이용하여 속도를 구할 수 있다.

Velocity의 값중 Z값은 필요가 없으므로 To Vector 2D 노드를 이용하여 X, Y값만 받도록 한다.

X, Y값의 길이, 즉 속력을 알아야 하므로 Vector2D Length 노드를 이용한다.

플로트 변수 Speed를 생성하여 속력 값을 저장한다.

변수 스피드를 BS_Idle에 연결을 한다.

애니메이션이 잘 작동한다.

스테이트 에일리어스

점프했을 때 떨어지는 애니메이션과 착지했을 때 애니메이션을 스테이트 에일리어스를 이용하여 구현 해보자.

스테이트 에일리어스는 디테일 - 스테이트 에일리어스에서 체크한 상태에서 다른 애니메이션을 재생할 때 이용된다.

스테이트 머신에서 우클릭을 하면 스테이트 에일리어스를 생성할 수 있다.

에일리어스에서 떨어지는 애님, 떨어지는 상태 루프 애님을 연결한다.

떨어지고 있는지 여부 판단을 위해 에일리어스 -> 떨어지는 애님 트랜지션 룰에서 Is Falling 변수를 연결해준다.

떨어지는 애님 재이 끝난 후 떨어지는 상태 루프 애님이 자동으로 재생될 수 있도록 트랜지션 룰을 누르고

스테이트의 시퀀스 플레이어에 따른 자동 규칙에 체크를 한다.

떨어지다가 착지 애님의 재생이 끝난 후 대기 상태 애님이 자동 재생 되도록 체크를 해준다.

떨어지거나 떨어진상태 루프의 애님에서 착지 애님이 연결되도록 에일리어스를 추가하여 연결해준다.

떨어짐, 떨어짐루프 애님 체크

착지했을 때의 조건을 에일리어스 -> 착지 애님 트랜지션 룰에서 Is Falling의 Not Boolean을 연결하여 조건을 넣는다.