Unreal Engine 5 - Project Shooter (11): 1인칭 애니메이션 보강 (2)

mingu Lee·2025년 9월 5일
post-thumbnail

1. 간단 요약


  • Swap 애니메이션 보강
  • Run 기능 구현 및 애니메이션 추가

2. 세부 과정


  1. Swap 애니메이션 보강
  2. Run 기능

2-1. Swap 애니메이션 보강


기존 Swap 동작은 Swap 애니메이션의 끝부분과 Idle 애니메이션의 손 위치가 서로 달라서 뚝뚝 끊기는 듯한 어색한 동작이 있었음.

보면 마지막에 손목이 살짝 뒤틀리는 듯한 동작이 있음.

이를 해결하기 위해 Anim Montage Asset에서 손목을 뒤트는 부분을 제거하여 Idle의 동작과 최대한 자연스럽게 이어질 수 있도록 함.

Rifle Draw Animation을 보면 38프레임쯤에서 끝내고 Idle로 연결되면 자연스러워 보일 것 같아 Sequence의 Frame을 조절해줌.

이렇게 Sequence의 종료 부분을 조절하여 테스트해본 결과 상대적으로 자연스러워 보이는 것을 확인.

수정 전수정 후

2-2. Run 기능


Left Shift를 누르면 Character의 속도가 빨라지고, Run 애니메이션이 재생되는 기능 구현.

IA_Run이라는 Input Action을 새로 만들어서 IMC에 Mapping.

Trigger는 눌렀을 때와 뗐을 때가 필요하므로 2개를 설정.

Character의 Event Graph에서 IA_Run Event를 만들어주고, Trigger 됐을 때 해당 키의 값을 저장.

단순히 Left Shift를 눌렀다고 뛰는 것이 아니라 w 방향키를 같이 눌렀을 때 달려야하므로, Character가 뛸 수 있는지 조건을 확인하여 bool 값을 return 해주는 CanRun 함수 추가.

만약 CanRun이 true라면 Character의 State가 Idle일 때 Run State로 변경 후 Charcater Movement Component의 Max Walk Speed를 2배로 설정.

Character의 ABP에서 Main·Sub Weapon State Machine에 Run State를 추가.

Transition 조건은 Charcater의 State가 Running인지 아닌지로 설정.

W와 Left Shift를 눌렀을 때만 Run 기능이 작동하는지 테스트.

3. 구현 중 발생한 문제 및 해결방안


  • Run 기능 구현 시 애니메이션을 적용하는 과정에서 Sequence 자체에 Root Motion이 설정되어 있어 Character Movement와 Root Motion 사이의 동기화 문제가 발생.
    Root Motion을 사용하지 않기 위해 비활성화 했는데도 같은 현상이 계속 발생함.
    찾아본 결과 Retargeting한 Animation Asset의 문제라는 사실을 알게 됨.
    해결 방법은 Retargeting 시 Chain에 Root를 추가하고 Root의 Translation Mode를 Globally Scaled로 설정 후 Export하면 문제가 해결된다고 함.
    기존 Asset을 제거하고 위 방법대로 다시 Export한 Asset을 적용하니 Root Motion이 제대로 비활성화 됨.
    자세한 내용은 아래 글 참고 바람.
    https://velog.io/@lmg0052/Unreal-Engine-5-Root-Motion-%EB%AC%B8%EC%A0%9C

4. 오늘의 결과물


profile
Github: https://github.com/dlalsrn

0개의 댓글