- 개요
Motion Warping 플러그인을 사용하면 캐릭터의 루트 모션이 타깃과 일치하도록 변경할 수 있다
따라서 해당 플러그인을 사용하여 클릭한 타깃과 캐릭터를 일치시킨다
또 로직을 추가하여 캐릭터가 shift를 누르고 있는 상황이라면 이동하지 않도록 설정한다

우선, 위와 같이 Motion Warping 플러그인을 활성화하였다
1) AuraProjectileSpell 클래스

SpawnProjectile 함수에 FVector의 인자를 추가하여 생성한 투사체의 Rotation을 설정한다

Vector로부터 적용할 Rotation을 가져와 생성하고, 생성한 Rotation의 높이를 0으로 설정한다
이후 생성한 투사체의 Transform의 Rotation을 위에서 설정한 값으로 적용한다
2) AuraCharacterBase 클래스

캐릭터의 캡슐컴포넌트와 메쉬에 대해 카메라의 충돌을 무시하도록 설정한다
3) AuraPlayerController 클래스

Shift 키를 누르는 경우 수행할 InputAction의 멤버변수를 추가한다

Shift 키를 누르거나, 떼는 경우 수행할 콜백 함수들을 추가하고
Shift 키의 입력에 따라 설정할 불리언 멤버 변수를 추가한다

SetupInputComponent 함수에서 InputAction의 입력에 따라 수행할 콜백함수를 바인드한다
- 키를 누르는 경우 수행 : ShiftPressed 함수
- 키를 눌렀다 떼는 경우 수행 : ShiftReleased 함수

AbilityInputTagReleased 함수의 조건을 위와 같이 변경한다
타겟팅을 하고 있지 않거나, shift 키를 누르고 있지 않은 경우 왼쪽 마우스 키를 눌렀다 뗀 지점으로 이동한다

AbilityInputTagHeld 함수의 조건을 위와 같이 변경하였다
타겟팅을 하고 있거나, ShiftKey를 누르고 있는 경우 ASC로부터 키를 누르고 있는 경우의 어빌리티를 발동한다
4) CombatInterface 인터페이스

CombatInterface의 함수를 블루 프린트에서 오버라이드할 수 있도록 BlueprintType 어트리뷰트를 추가한다
그리고 UpdateFacingTarget 함수를 추가하여 해당 함수를 통해 Motion Warping할 수 있도록 설정한다
5) 언리얼 에디터
5 - 1) 애니메이션 몽타주


애니메이션 몽타주에서 Notify State - Motion Warping을 추가하고 위와 같이 설정한다
5 - 2) BP_PlayerController 블루 프린트

위와 같이 Shift Action을 설정한다
5 - 3) BP_AuraCharacter 블루 프린트


MotionWarping 컴포넌트를 추가한다
추가한 후에, UpdateFacingTarget 함수를 위와 같이 오버라이드한다
이때 애니메이션 몽타주에서 설정한 Warp Target Name을 동일하게 사용해야 한다
5 - 4) GA_FireBolt 블루 프린트



위와 같이 로직을 구성하였다
- 첫 번째 과정 : AbilityTask를 사용하여 어빌리티의 타겟 데이터를 가져온다
- 두 번째 과정 : 가져온 타겟 데이터를 바탕으로 Motion Warping을 수행한다
- 세 번째 과정 : 애니메이션 몽타주를 재생한 후에 어빌리티를 수행한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| AbilityTasks - 최종) 투사체에 GameplayEffect 적용 (0) | 2025.08.18 |
|---|---|
| AbilityTasks - 4) 투사체 충돌 처리 (0) | 2025.08.18 |
| AbilityTasks - 2) AnimNotify를 사용한 이벤트 발동 + Task를 사용하여 어빌리티의 타겟 데이터 가져오기 (0) | 2025.08.16 |
| AbilityTasks - 1) GAS 프레임워크에서의 Prediction (0) | 2025.08.15 |
| GameplayAbility - 최종) 어빌리티를 통한 투사체 생성 (0) | 2025.08.11 |