[UE5] Assassin13 - Motion Warping을 사용한 암살

윤정민·2023년 5월 28일
0

[Unreal Project]Assassin

목록 보기
14/26

1. 개요

프로젝트 이름에 들어가는 암살기능을 드디어 구현한다. 암살 시스템을 위해서는 AI의 감지 레벨이나 플레이어가 벽에 은신하는 기능등 다양한 기능이 필요하지만 일단 암살하는 애니메이션을 실행하는 기능을 구현해보자. 해당 기능은 이전에 Finisher를 구현할 때 구현해보았다. 이를 구현하기 위해 플레이어와 적의 Rotation과 Location을 변경했다. 하지만 이번에 구현하기 위해 비슷한 기능을 찾아보니 언리얼엔진5에서 출시된 모션 워핑이라는 기능이 있었다. 새 기능은 해봐야 제맛이니 새로운 방법으로 같은 기능을 구현해보자.

2. 모션 워핑

캐릭터의 루트 모션이 타깃과 일치하도록 동적으로 정렬하는 기능

관련문서: https://docs.unrealengine.com/5.1/ko/motion-warping-in-unreal-engine/

2.1. PlugIn

  • 모션워핑 플러그인을 켜주자
    • 5.1에서 베타버전이긴 한데 5의 실험단계일 때도 많이들 사용하는걸 보니 괜찮을듯 함

2.2. Notify 설정

  • 일반 노티파이처럼 추가
  • 타깃 설정
  • Target의 이름을 설정
  • Rotation은 필요없어서 비활성화

2.3. Target Location& Rotation 설정

FVector TargetLoc = TargetCharacter->GetActorLocation() - TargetCharacter->GetActorForwardVector()*137.f;	//137은 오차
FRotator TargetRot = TargetCharacter->GetActorRotation();
MotionWarpingComp->AddOrUpdateWarpTargetFromLocationAndRotation(TEXT("AssassinTarget"), TargetLoc, TargetRot)

3. 결과

4. 느낀점

Root Motion을 사용하면서 Actor의 Transform을 변경하기에 너무 좋다. 다음에 Climbing이나 Finisher를 구현할 때도 Motion Warping을 구현해야겠다. 코드내용도 훨씬 가독성 좋아진다. 다만 아쉬운 부분은 nofity에 Target이름을 String으로 적어줘야 된다는 점이다. Name을 등록하고 Enum으로 관리하여 선택하는 방법이 더 좋을것 같다.

profile
그냥 하자

0개의 댓글