반응형

대부분 애니메이션 시퀀스에 이동거리도 포함되어 있는데
애니메이션 재생 중에 입력에 의한 이동을 끄고 애니메이션의 이동을 사용하는 것을 루트모션이라고 한다.
보통 루트모션을 통해 이동을하면 보다 자연스럽게 이동하는 것처럼 보인다.

문제는 플레이어의 입력 유무와 관계 없이 애니메이션 시퀀스에 포함된 벡터가 적용된다는 점인데,
많은 게임에서 후방 키(S키)를 누르면 전진하지 않고 제자리에서 스킬을 사용하는 방식을 사용하고 있다.
입력을 무시하고 애니메이션 시퀀스대로 움직이는 루트모션과 입력을 통한 제자리 공격.
해당 기능 구현은 어떻게 해야할까?
방법은 언리얼 캐릭터 클래스에서 자체 함수를 제공해주고 있어서 이를 사용하면 된다.

루트모션의 스케일을 0으로 만들어버리면 루트모션을 적용하지 않는 것과 같다.

그러면 이제 후방 키 입력을 받았을 때 SetAnimRootMotionTranslationScale을 0으로 만들면 된다는 것을 알았는데,
이를 어떻게 간단히 처리할 수 있을까?
그건 이동을 처리하는 함수에서 X축 값을 프로퍼티에 저장하고, 이 값이 음수면 후방 키를 누른 것으로 판단한다.

이 로직은 경우에 따라 Y축 또는 양수로 처리해야할 수도 있다.
입력 매핑 컨텍스트와 이동 로직을 어떻게 짰느냐에 따라 차이가 있을 수 있는데, 입력 매핑 컨텍스트에서 W키의 모디파이어를 전혀 수정하지 않고 ASD키만 모디파이어로 수정했다면 위 로직으로 처리할 수 있다.
반응형
'Unreal Engine > 기능 구현' 카테고리의 다른 글
| [Unreal Engine 5] 툴팁 UI 표시 (0) | 2025.10.28 |
|---|---|
| [Unreal Engine 5] 아이템 인벤토리 UI (0) | 2025.10.27 |
| [Unreal Engine 5] 점프가 있는 애니메이션 (1) | 2025.10.25 |
| [Unreal Engine 5] 메인 스켈레탈 메시 렌더링 표시 해제 및 애니메이션 재생 (0) | 2025.10.21 |
| [Unreal Engine 5] 애니메이션 중단에 따른 상태 관리(OnMontageEnded 델리게이트) (0) | 2025.10.20 |
