- 개요
고블린 주술사는 GA를 통해 임프를 소환한다
따라서 임프를 소환하는 GameplayAbility를 생성하고 설정한다
다만, 몬스터의 GA 발동은 BehaviorTree의 Task를 통해 수행하므로
고블린 주술사와 같은 Elementalist 직업군의 BT를 생성한 이후에 실제 실행결과를 확인한다
1) C++ 사이드
1 - 1) AuraGameplayTags 클래스


임프를 소환하는 GameplayAbility는 공격과는 다른 개념이므로 해당 GA를 표현하는 Tag를 추가한다
1 - 2) CombatInterface 클래스

GA를 통해 소환한 몬스터의 수를 반환하는 GetMinionCount 함수를 추가한다
해당 함수를 BT의 Task에서 사용하여 소환하는 몬스터의 수를 통제할 수 있다
1 - 2) AuraCharacterBase 클래스



GetMinionCount 함수를 위와 같이 오버라이드하여 MinionCount 멤버변수를 반환하도록 설정한다
1 - 3) AuraSummonAbility 클래스

AuraGameplayAbility 클래스를 상속받은 AuraSummonAbility 클래스를 생성하였다
해당 GA를 발동하여 소환수를 소환할 수 있다
멤버변수의 구성은 다음과 같다
- NumMinions : 소환하는 소환수의 수
- MinionClasses : 소환할 몬스터의 타입
- MinSpawnDistance : 소환수를 소환할 최소거리
- MaxSpawnDistance : 소환수를 소환할 최대거리
- SpawnSpread : 소환수를 소환할 범위
멤버함수의 구성은 다음과 같다
- GetSpawnLocations 함수 : 소환수를 소환할 위치를 반환하는 함수
- GetRandomMinionClass 함수 : 템플릿 함수로서, MinionClasses에 저장한 값을 랜덤하게 반환

GetSpawnLocations 함수의 로직은 위와 같다
Forward 벡터를 기준으로 왼쪽으로 SpawnSpread의 값만큼 회전하여 생성한 부채꼴의 LeftOfSpread 벡터를 가져온다
이후 소환할 몬스터의 수를 의미하는 NumMinions 만큼의 몬스터를 소환하기 위해 반복문을 수행한다
- LeftOfSpread 벡터로부터 오른쪽으로 회전하여 균등한 방향 벡터를 Direction에 저장
- Location부터 Direction의 방향까지의 거리 내에서 선택된 랜덤한 값을 ChosenSpawnLocation에 저장
- ChosenSpawnLocation 값을 기준으로 LineTrace를 수행
- Trace가 Hit되었다면 결과값을 ChosensSpawnLocation에 저장
- SpawnLocations에 ChosenSpawnLocation을 저장하고, 순회가 끝난 후 SpawnLocations 반환
2) 블루프린트 사이드
2 - 1) GA_SummonAbility 블루프린트


위와 같이 해당 GameplayAbility 블루프린트의 멤버변수를 설정한다

ActivateAbility 이벤트의 로직을 위와 같이 구성한다
GetSpawnLocations 함수를 호출하여 반환된 Location 값을 무작위로 섞은 후에 순회한다
순회중인 Location에 소환과 관련된 Niagara System을 생성한다

Location의 순회가 끝난 후에, 소환하는 애니메이션 몽타주를 재생하고
해당 몽타주의 Montage.Attack.1에 해당하는 AnimNotify 이벤트를 실행한다
소환할 수 있다면, GetRandomMinionClass 함수를 호출하여 소환수를 소환한다
2 - 2) DA_CharacterClassInfo 데이터애셋

위와 같이 Elemetalist 직업군에 기초적으로 필요한 GameplayAbility를 추가한다
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 맵 제작 - 최종) 기본 맵 변경 + 맵 오브젝트 Fade In / Fade Out (0) | 2025.10.16 |
|---|---|
| 몬스터 마무리 - 최종) 고블린 주술사 AI 구성 + 코드 개선 (0) | 2025.10.12 |
| 몬스터 마무리 - 3) 임프 추가 및 기본 설정 (0) | 2025.10.10 |
| 몬스터 마무리 - 2) 쓰러지는 몬스터의 SFX 효과 추가 (0) | 2025.10.09 |
| 몬스터 마무리 - 1) GameplayCue를 통한 피격 효과 재생 (0) | 2025.10.09 |