[DAY105] SoulslikeProject(8) - Motion Warping

베리투스·2026년 2월 6일

TIL: Today I Learned

목록 보기
89/93

✅ 오늘 한 일 (Done)

  • Motion Warping 적용: 공격 시 몬스터와의 거리를 좁히거나, 회피 시 정확한 위치로 이동하도록 애니메이션 보정 기능 구현.
  • Root Motion 설정: 워핑의 기준이 되는 이동 데이터를 확보하기 위해 원본 애니메이션 시퀀스의 Enable Root Motion 활성화.
  • Warp Target 동적 업데이트: 공격 직전 타겟의 위치를 Add or Update Warp Target 노드로 갱신하여 빗나가지 않는 공격 구현.

💣 트러블 슈팅 (Issue & Fix)

  • 문제: 워핑 로직은 정상인데, 캐릭터가 타겟에게 가다가 중간에 뚝 멈추거나 제자리걸음을 하는 현상 발생.
  • 원인: 몽타주 타임라인에 배치한 Motion Warping Notify State의 구간이 너무 짧아서, 캐릭터가 해당 거리만큼 이동할 물리적 시간(프레임)이 부족했음.
  • 해결: 노티파이의 길이를 애니메이션의 실제 이동 구간에 맞춰 충분히 길게 늘려주어 부드러운 이동을 확보함.

💡 핵심 코드 (Key Logic)

  • 필수 전제 조건:
    • Root Motion: 원본 시퀀스에서 루트 모션이 꺼져 있으면 엔진이 이동 거리를 계산할 수 없어 워핑이 작동하지 않음.
  • Naming Convention (실수 주의):
// 몽타주 Notify의 'Warp Target Name'과 토씨 하나 틀리지 않고 일치해야 함
MotionWarpingComp->AddOrUpdateWarpTargetFromLocation(
    FName("AttackTarget"), // 대소문자 구분 필수 (attackTarget X)
    TargetLocation
);
profile
Shin Ji Yong // Unreal Engine 5 공부중입니다~

0개의 댓글