2026-07-16 TIL (99일차)
2026-07-16 TIL (99일차)
TIL - Unreal Engine 5: 캐릭터 사망 애니메이션 최적화 및 시퀀서 수정
목표
기존 프로토타입에서는 캐릭터 HP가 0이 되어 사망할 때, 즉시 게임 오버 연출(RunnerDeathSequence: 철창 닫힘, UI 출력)로 넘어가며 캐릭터 메쉬가 숨김(Hidden) 처리되었다. 이로 인해 캐릭터가 쓰러지는 사망 애니메이션을 유저가 볼 수 없는 문제가 있었다.
이를 해결하기 위해 사망 시 즉각적인 시퀀스 호출을 막고, 사망 몽타주(Montage) 재생 -> 타이머(Delay) 대기 -> 데스 시퀀스 실행 순서로 흐름을 제어하는 C++ 로직을 구현했다.
- 캐릭터 사망 시 이동 로직 강제 중단 처리
- 사망 애니메이션의 스케일 및 위치 데이터(공중부양) 버그 수정
- 레벨 시퀀서(Sequencer)를 활용한 애니메이션 베이킹(Baking)
주요 내용
1. 캐릭터 이동 제어 (Movement Control)
- 문제: 사망 시 캐릭터가 물리적/로직적으로 멈추지 않고 애니메이션만 재생되거나, Idle 상태로 돌아가버리는 현상.
- 해결:
HandlePlayerDeath()함수 내에서SetMoveMode(ERunnerMoveMode::Stop)을 호출하여 캐릭터의 Tick 기반 이동 로직을 강제로 차단함. - 팁: 단순히 몽타주 재생만으로는 상태를 유지하기 어려울 수 있으므로, 사망 상태는
AnimGraph의 State Machine 내Death상태에서 관리하는 것이 안정적임.
2. 애니메이션 3D 데이터 수정 (Sequencer)
- 스케일 버그 (Scale): 믹사모(Mixamo) 등 외부 에셋 사용 시 스케일이 0.66 등으로 축소되는 현상 해결.
- 시퀀서에서 해당 본(
Hips)의Scale키프레임을 제거하거나1.0으로 고정함.
- 시퀀서에서 해당 본(
- 공중부양 및 슬라이딩 버그 (Location):
- 앞으로 나가는 현상:
Location.X,Location.Y트랙의 데이터를 삭제하고0.0으로 고정하여 “In-Place(제자리)” 애니메이션으로 변경. - 공중에 뜨는 현상:
Location.Z트랙은 삭제하지 않고(바닥 안착을 위해 필요), 키프레임 전체를 드래그하여 바닥 높이에 맞게 오프셋을 조절함.
- 앞으로 나가는 현상:
3. 애니메이션 구워내기 (Bake)
- 수정된 시퀀서 데이터를 실제 애니메이션 파일로 저장하는 과정.
- 방법:
- 시퀀서 트랙에서
Skeletal Mesh우클릭. Bake Animation Sequence실행.- 원하는 경로에
.uasset으로 저장.
- 시퀀서 트랙에서
작업 시 유의사항
- 키프레임 관리: 값을 변경한 후에는 반드시 해당 값 옆의
+아이콘(키프레임 추가)을 눌러 값을 확정해야 함. - 삭제 vs 고정: 특정 축을 무조건 삭제하는 것이 아니라, 캐릭터의 이동 원리(X/Y축 이동, Z축 높이)에 따라 살려둘 트랙과 삭제할 트랙을 구분해야 함.
- 상태 머신: 일회성 연출인 몽타주와 달리, 사망과 같은 ‘지속적 상태’는 상태 머신(State Machine) 처리가 가장 깔끔함.
🔗 참고 자료
- Unreal Engine 5 Documentation - Sequencer
- Character Animation State Machine Logic
This post is licensed under CC BY 4.0 by the author.