언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

몬스터 근접 공격 - 2) 모션 워핑의 사용

monstro 2025. 9. 26. 17:35
728x90
반응형

- 개요

모션 워핑(Motion Warping)캐릭터의 루트 모션타깃과 일치하도록 동적으로 정렬하는 기능을 의미한다

플레이어를 공격하는 몬스터플레이어의 위치에 따라 정확하게 회전시키기 위해 사용한다

 

1) EnemyInterface 클래스

 

몬스터가 공격대상인 플레이어캐싱하고 가져올 수 있도록 하는 인터페이스를 추가한다

구성은 다음과 같다

  • SetCombatTarget 함수 : 공격대상을 캐싱하는 함수, 블루프린트에서 오버라이드사용 가능
  • GetCombatTarget 함수 : 캐싱된 공격대상을 반환하는 함수, 블루프린트에서 오버라이드사용 가능

 

2) AuraEnemy 클래스

EnemyInterface 함수 오버라이드

 

공격대상 캐싱 용도의 멤버변수

 

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

 

 

오버라이드한 로직은 위와 같다

CombatTarget 멤버변수에 인자로 들어온 값을 저장하고, CombatTarget 멤버변수반환한다

 

3) 언리얼 에디터

3 - 1) BTT_Attack 블루프린트

 

Blackboard Key Selector 타입의 로컬변수를 추가한다

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

 

 

위와 같이 로직을 추가한다

CombatTargetSelector로부터 Actor를 가져와 SetCombatTarget 함수에 인자로 넘겨주어 CombatTarget에 저장한다

이때 가져온 Actor가 유효하지 않다면 Task를 종료한다

 

3 - 2) BT_EnemyBehaviorTree 블루프린트

BTT_Attack 노드

 

각 노드 설정

 

BehaviorTree에서 사용하는 BTT_Attack 노드의 Combat Target Selector를 위와 같이 설정한다

 

3 - 3) BP_EnemyBase 클래스

MotionWarping 컴포넌트 추가

 

UpdateFacingTarget 이벤트 추가

 

위와 같이 수행하여 UpdateFacingTarget 이벤트가 호출되면 FacingTarget 소켓의 방향으로 모션워핑을 수행한다

 

3 - 4) GA_MeleeAttack 블루프린트

 

위와 같이 로직을 수정한다

GA를 발동한 AvatarActor를 가져와 CombatInterface로 캐스팅한 후에 UpdateFacingTarget 함수를 호출한다

이후 애니메이션 몽타주를 재생하고 어빌리티를 종료한다

 

3 - 5) AM_Attack_GoblinSpear 애니메이션 몽타주

모션 워핑 트랙 추가

 

모션 워핑 설정 (1)

 

모션 워핑 설정 (2)

 

위와 같이 Warp Translation 옵션은 비활성화하여, 루트 모션의 이동 컴포넌트의 워핑막고

Warp Rotation 옵션을 활성화하여 회전 컴포넌트의 워핑설정한다

Rotation TypeFacing으로 설정하여 WarpTarget바라보게끔 설정한다

 

- 최종 실행 결과

 

728x90
반응형