Unreal Engine/기능 구현 / / 2025. 10. 15. 18:57

[Unreal Engine 5] 애니메이션 블루프린트(3) : 캐싱 포즈와 낙하 및 착지

반응형

이전 글에서 캐릭터의 이동과 관련된 애니메이션 스테이트 머신을 만들었다.

 

이를 로코모션(Locomotion)이라고 지칭했다.

 

로코모션을 통해 Idle -> Walk -> Run과 앞뒤좌우 이동을 구현했다.

이번에는 점프와 낙하, 착지와 관련된 기능을 구현한다.

 

구현하는 방법은 크게 두가지가 있다.

1. 로코모션에서 다 구현하는 것

2. 상하 이동과 관련된(점프, 낙하) 애니메이션은 따로 구현하는 것

 

아무래도 추후 수정 측면에서 각 기능별 특징으로 구분하는 것이 낫다.

이를 가능케 해주는 기능이 "캐싱 포즈"이다.

 

캐싱 포즈란, 현재 계산된 애니메이션을 임시 저장하는 기능이다.

이 기능을 이용해서 이미 계산된 애니메이션을 저장하고, 점프와 관련된 기능들만 다시 계산하여 성능 최적화도 하고 가독성도 챙기자.

 

현재 애니메이션 블루프린트의 애님 그래프는 다음과 같은 상태다.

 

Alt키를 눌러 Output Pose와 연결을 해제하고 cache pose를 만든다.

 

캐시 포즈의 이름은 스테이트 머신과 동일하게 해준다.

 

이제 새로운 스테이트 머신을 만든다.

이름을 Main State라고 지칭한다.

 

 

메인 스테이트로 들어가서 스테이트를 추가한다.

이름은 Locomotion으로 한다. 실제로 캐싱된 로코모션을 가져올 것이다.

 

 

내부에 들어가서 Locomotion을 검색하면 캐싱된 로코모션을 찾을 수 있다.

 

 

컴파일하면 정상적으로 동작함을 알 수 있다.

 

이제 Main State의 로코모션에 스테이트 몇가지 조건을 이용해서 낙하, 착지를 구현한다.

 

다음과 같이 스테이트를 추가한다.

만약 여기서 점프도 구현해야 한다고 하면 구현이 쉽다.

Locomotion -> Jump -> Falling -> Land -> Locomotion  순으로 연결하면 된다.

 

 

먼저 Locomotion에서 Falling으로 넘어가는 조건을 설정해준다.

동그라미 아이콘을 더블클릭한다.

 

 

이전 글에서 애님 인스턴스 클래스 또는 이벤트 그래프를 통해 구한 Is Falling 변수를 연결해주면 된다.

 

만약 점프도 구현하고 싶다면 위 조건을 그대로 사용하면 된다.

 

다음으로 Falling 스테이트를 클릭해 애니메이션을 연결해준다.

 

여기서 주의할 점은, 낙하 애니메이션은 땅에 닿을때까지 반복 재생되어야 하므로 "애니메이션 루프"를 켜주어야 한다. 

애니메이션 시퀀스를 클릭한 상태에서 우측 디테일 패널로 가면 켤 수 있다.

 

 

 

다음으로 Land의 조건을 정한다.

땅에 닿는다는 것은 Is Falling 변수가 false가 되었음을 의미한다.

 

Is Falling에서 Not Boolean을 연결하여 Result와 연결한다.

 

 

다음으로 Land 애니메이션 시퀀스를 연결한다.

이 때, 착지 모션은 반복해서 나오면 안되므로 애니메이션 루프를 켜지 않는다. 

이 점이 중요하다.

 

 

마지막으로 착지에서 기본 Idle 또는 이동 상태로 전환되는 조건을 완성해야 하는데,

두 가지 조건이 필요하다.

1. Land 애니메이션 시퀀스가 종료되었거나

2. 착지하자마자 바로 이동하고 있거나

 

첫번째 애니메이션이 종료되면 넘어간다는 규칙은 다음과 같이 설정할 수 있다.

 

 

두 번째 조건을 생성해주고 싶으면 다시 Land 에서 Locomotion으로 드래그 앤 드랍해주면 조건이 추가된다.

 

두번째 조건은 Ground Speed가 일정 속도보다 크면 바로 Locomotion으로 넘어가겠다는 규칙을 추가해주면 된다.

 

 

최종 확인

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유