- 개요
모션 워핑(Motion Warping)은 캐릭터의 루트 모션이 타깃과 일치하도록 동적으로 정렬하는 기능을 의미한다
플레이어를 공격하는 몬스터를 플레이어의 위치에 따라 정확하게 회전시키기 위해 사용한다
1) EnemyInterface 클래스

몬스터가 공격대상인 플레이어를 캐싱하고 가져올 수 있도록 하는 인터페이스를 추가한다
구성은 다음과 같다
- SetCombatTarget 함수 : 공격대상을 캐싱하는 함수, 블루프린트에서 오버라이드 및 사용 가능
- GetCombatTarget 함수 : 캐싱된 공격대상을 반환하는 함수, 블루프린트에서 오버라이드 및 사용 가능
2) AuraEnemy 클래스


위와 같이 EnemyInterface의 함수들을 오버라이드하고, 공격대상인 플레이어를 캐싱할 멤버변수도 추가한다

오버라이드한 로직은 위와 같다
CombatTarget 멤버변수에 인자로 들어온 값을 저장하고, CombatTarget 멤버변수를 반환한다
3) 언리얼 에디터
3 - 1) BTT_Attack 블루프린트

Blackboard Key Selector 타입의 로컬변수를 추가한다
해당 변수를 사용하여 Blackboard에서 저장한 TargetToFollow를 가져와 CombatTarget의 값으로 저장한다

위와 같이 로직을 추가한다
CombatTargetSelector로부터 Actor를 가져와 SetCombatTarget 함수에 인자로 넘겨주어 CombatTarget에 저장한다
이때 가져온 Actor가 유효하지 않다면 Task를 종료한다
3 - 2) BT_EnemyBehaviorTree 블루프린트


BehaviorTree에서 사용하는 BTT_Attack 노드의 Combat Target Selector를 위와 같이 설정한다
3 - 3) BP_EnemyBase 클래스


위와 같이 수행하여 UpdateFacingTarget 이벤트가 호출되면 FacingTarget 소켓의 방향으로 모션워핑을 수행한다
3 - 4) GA_MeleeAttack 블루프린트

위와 같이 로직을 수정한다
GA를 발동한 AvatarActor를 가져와 CombatInterface로 캐스팅한 후에 UpdateFacingTarget 함수를 호출한다
이후 애니메이션 몽타주를 재생하고 어빌리티를 종료한다
3 - 5) AM_Attack_GoblinSpear 애니메이션 몽타주



위와 같이 Warp Translation 옵션은 비활성화하여, 루트 모션의 이동 컴포넌트의 워핑은 막고
Warp Rotation 옵션을 활성화하여 회전 컴포넌트의 워핑은 설정한다
Rotation Type은 Facing으로 설정하여 WarpTarget을 바라보게끔 설정한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 몬스터 근접 공격 - 4) 애니메이션 몽타주와 AnimNotify 태그 연동 + 공격당한 플레이어에게 데미지 적용 (0) | 2025.09.27 |
|---|---|
| 몬스터 근접 공격 - 3) 플레이어의 피격 여부 판단 (0) | 2025.09.27 |
| 몬스터 근접 공격 - 1) 근접 공격 GameplayAbility 생성 (0) | 2025.09.26 |
| 몬스터 AI - 최종) EQS를 사용한 원거리 몬스터 AI 설정 (0) | 2025.09.21 |
| 몬스터 AI - 5) Task 클래스를 이용한 몬스터의 공격 구현 (0) | 2025.09.20 |