- 개요
몬스터의 원거리 공격을 위한 설정을 마무리한다
고블린 사수의 경우 새총을 사용하여 플레이어를 공격하는데, 이때 새총이 당겨지면서 투사체를 발사한다
따라서 이에 대한 처리를 추가적으로 진행해야 한다
1) C++ 를 사용한 작업
1 - 1) AuraDamageGameplayAbility 클래스

GA 블루프린트에서 진행하던 랜덤한 TaggedMontage를 가져오는 작업을
C++ 클래스의 GetRandomTaggedMontageFromArray 함수에서 수행하도록 수정한다
BlueprintPure로 지정하여 실행핀을 사용하지 않도록 설정한다

로직은 위와 같다
TaggedMontage가 저장된 TArray를 인자로 받아 순회하면서 랜덤한 TaggedMontage를 반환한다
1 - 2) AuraProjectile 클래스

OnSphereOverlap 함수에 위의 로직을 추가하여 투사체가 같은 타입의 캐릭터에게 피해를 주지 않도록 설정한다
2) 언리얼 에디터
2 - 1) GA_MeleeAttack 블루프린트

AvatarActor의 AttackMontages로부터 랜덤한 TaggedMontage를 가져오는 로직을
GetRandomTaggedMontageFromArray 함수를 통해 수행하도록 수정한다
2 - 2) BP_SlingshotRock 블루프린트

BeginPlay 이벤트를 구성하여 Yaw / Pitch / Roll을 랜덤한 값으로 설정한 후에 Sphere의 Collision을 설정한다

Tick 이벤트를 구성하여 Yaw / Pitch / Roll의 값만큼 돌의 Rotation을 설정한다
2 - 3) GA_RangedAttack 블루프린트

GA_MeleeAttack과 앞부분은 동일하지만, CombatSocketLocation을 가져온 후의 로직에서 차이가 존재한다
AvatarActor -> CombatTarget을 거쳐서 Target의 Location을 가져와 해당 Location으로 투사체를 생성한다
2 - 4) ABP_Slingshot 애니메이션 블루프린트
해당 애니메이션 블루프린트는 새총에서 사용하며 새총의 당겨짐을 표현하는 용도로 사용한다

Init 함수에서 새총의 Owner를 가져와 해당 Owner의 SkeletalMeshComponent를 OwnerMesh로 저장한다
따라서 고블린 사수의 SkeletalMeshComponent를 저장하게 된다

Update 함수에서 저장한 OwnerMesh의 RightHandSocket에 해당하는 소켓을 가져와
가져온 소켓의 Transform을 HandSocketTransform으로 저장한다

HandSocketTransform을 분해하여 Location에 맞춰 새총의 Bone을 조정하고,
새총의 당겨짐을 의미하는 HoldingPouch 변수에 따라 일반적인 애니메이션과 당겨지는 애니메이션을 재생한다
2 - 5) AM_Attack_Goblin_Slingshot 애니메이션 몽타주

새총을 발사하는 애니메이션 몽타주에 2개의 AnimNotify를 추가한다
각각 다음과 같다
- ReleaseRock 이벤트 : 새총의 당겨지는 애니메이션 몽타주를 재생
- GrabPouch 이벤트 : 새총의 애니메이션 블루프린트의 HoldingPouch를 설정
2 - 6) ABP_Goblin_Slingshot 애니메이션 블루프린트

Init 이벤트를 위와 같이 구성하여
Owner -> Weapon -> Weapon의 AnimInstance 순서로 가져와 ABPSlingshot으로 설정한다

애니메이션 몽타주의 ReleaseRock 노티파이에 의해 실행되는 이벤트로서,
ABPSlingshot의 유효함에 따라 다르게 동작한다
- 유효한 경우 : 새총의 AnimInstance의 HoldingPouch를 false로 설정 + 새총의 공격 애니메이션 몽타주 재생
- 유효하지 않은 경우 : Init 이벤트의 로직 수행

애니메이션 몽타주의 GrabPouch 노티파이에 의해 실행되는 이벤트로서,
새총의 AnimInstance의 HoldingPouch를 True로 설정한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 몬스터 스킬 공격 - 최종) 몬스터 스킬 공격 마무리 + 몬스터 AI 개선 (0) | 2025.10.04 |
|---|---|
| 몬스터 스킬 공격 - 1) 필수적인 요소 세팅 (0) | 2025.10.04 |
| 몬스터 원거리 공격 - 1) 필수적인 요소 세팅 (0) | 2025.10.02 |
| 몬스터 근접 공격 - 최종) 애니메이션 몽타주와 소켓 연결 및 개선 (0) | 2025.09.28 |
| 몬스터 근접 공격 - 4) 애니메이션 몽타주와 AnimNotify 태그 연동 + 공격당한 플레이어에게 데미지 적용 (0) | 2025.09.27 |