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

몬스터 마무리 - 3) 임프 추가 및 기본 설정

monstro 2025. 10. 10. 20:03
728x90
반응형

- 개요

고블린 주술사는 마법 공격을 수행한 것 말고도 임프를 소환하여 공격한다

소환하는 임프는 근거리 공격을 수행하는 임프 + 근거리 공격을 수행하는 임프의 2가지 버전이 존재한다

주술사의 동작을 수정하기 이전에 소환되는 임프를 설정하도록 한다

 

1) C++ 사이드

1 - 1) AuraGameplayTags 클래스

SphereTrace를 수행할 Socket의 Tag 추가

 

추가한 Tag를 생성

 

임프 꼬리를 사용하여 근거리 공격을 수행한다

따라서 꼬리에서 SphereTrace를 수행하기 위해 꼬리의 Socket에 대한 Tag를 추가한다

 

1 - 2) AuraCharacterBase 클래스

꼬리의 Socket 이름을 의미하는 멤버변수

 

GetCombatSocketLocation 함수를 수정

 

꼬리의 Socket 이름을 의미하는 멤버변수를 추가하고

GetCombatSocketLocation 함수에서 해당 멤버변수의 이름을 가진 Socket의 위치를 가져온다

 

1 - 3) AuraProjectileSpell 클래스

SpawnProjectile 함수 수정

 

SpawnProjectile 함수에서 Vector 말고도 GameplayTag인자로 받도록 수정한다

 

SpawnProjectile 함수 수정 (2)

 

SpawnProjectile 함수의 로직을 수정하여 인자로 받은 Tag를 사용하여 Socket의 위치를 가져오도록한다

 

2) 블루프린트 사이드

2 - 1) GA_RangedAttack 블루프린트

EventGraph 수정 (1)

 

몬스터원거리 공격을 수행하는 GA_RangedAttack 블루프린트를 위와 같이 수정하였다

UpdateFacingTarget 함수를 호출하고 AttackMontages - 랜덤한 TaggedMontage를 가져오는 로직을 수행한다

 

EventGraph 수정 (2)

 

위의 로직에서 가져온 TaggedMontage를 분해하여 다음과 같이 사용한다

  • Montage : PlayMontageAndWait 노드에서 사용
  • MontageTag : WaitGameplayEvent 노드 + GetCombatSocketLocation 노드에서 사용
  • SocketTag : SpawnProjectile 노드에서 사용

 

2 - 2) GA_Firebolt 블루프린트

EventGraph 수정

 

플레이어의 화염구를 생성하는 GA_Firebolt 블루프린트를 위와 같이 생성한다

화염구는 무기의 끝에서 생성하므로 해당하는 CombatSocket을 지정하여 SpawnProjectile 노드에 넘겨준다

 

2 - 3) 근거리 임프 + 원거리 임프 블루프린트 설정

근거리 임프의 TailSocketName 멤버변수 설정

 

근거리 임프의 HitReactMontage 멤버변수 + AttackMontages 멤버변수 + BloodEffect 멤버변수 + DeathSound 멤버변수 설정

 

원거리 임프의 WeaponTipSocketName 멤버변수 + LeftHandSocketName 멤버변수 설정

 

원거리 임프의 HitReactMontage 멤버변수 + AttackMontages 멤버변수 + BloodEffect 멤버변수 + DeathSound 멤버변수 설정

 

- 최종 실행 결과

 

728x90
반응형