- 개요
스킬창 UI에 패시브 스킬을 등록하여 어빌리티를 발동하고, 스킬창 UI에서 제거하여 어빌리티를 종료한다
또 어빌리티가 발동되면 FX 연출을 수행하도록 설계한다
- C++ 사이드
1) PassiveNiagaraComponent 클래스

패시브 스킬이 발동되면 재생할 NiagaraComponent 클래스를 위와 같이 추가한다
멤버변수로 적합한 패시브 스킬의 GameplayTag를 갖고 있도록 설정한다

생성자에서는 자동재생을 비활성화한다

BeginPlay 함수의 로직은 위와 같다
Owner로부터 ASC를 직접 가져오거나 CombatInterface를 거쳐 ASC를 가져와서
ActivePassiveEffect 델리게이트에 OnPassiveActivate 함수를 바인드한다

OnPassiveActivate 함수의 로직은 위와 같다
인자로 받은 Tag와 PassiveSpellTag 멤버변수를 비교하고
해당 NiagaraComponent 클래스가 재생되고 있지 않다면 재생하고, 재생되고 있다면 중지한다
2) AuraAbilitySystemComponent 클래스

ActivatePassiveEffect 델리게이트를 추가하여 패시브 스킬이 발동되었음을 전파한다
해당 델리게이트는 C++에서만 사용가능하고 1 : 多로 전파하며 Tag와 불리언의 2개의 인자를 받는다

추가한 델리게이트를 멤버변수로 추가한다

GetInputTagFromAbilityTag 함수를 GetSlotFromAbilityTag 함수로 변경하고 그외의 함수들을 추가한다

ClearSlot 함수에는 static 키워드를 붙여 수정한다

SlotIsEmpty 함수의 로직은 위와 같다
발동가능한 어빌리티를 순회하면서 해당 어빌리티의 슬롯이 비어있는지 판단한다

AbilityHasSlot 함수의 로직은 위와 같다
인자로 받은 GASpec의 어빌리티에 인자로 받은 Slot 태그가 존재하는지 판단한다

GetSpecWithSlot 함수의 로직은 위와 같다
발동가능한 어빌리티를 순회하면서 인자로 받은 Slot 태그를 갖고 있는 어빌리티의 GASpec을 반환한다

IsPassiveAbility 함수의 로직은 위와 같다
AbilityInof를 가져와 인자로 받은 GASpec의 Tag를 갖고 있는 AuraAbility를 가져온다
가져온 AuraAbility의 Type이 "Abilities_Type_Passive"인지 비교하여 그 결과를 반환한다

AssignSlotToAbility 함수의 로직은 위와 같다
인자로 받은 GASpec에 인자로 받은 Slot 태그를 부여한다

MulticastActivatePassiveEffect 함수의 로직은 위와 같다
ActivatePassiveEffect 델리게이트를 브로드캐스트하여 바인드된 콜백함수를 호출한다

ServerEquipAbility 함수의 로직을 위와 같이 수정한다
수정한 로직은 다음과 같다
- 장착하려는 스킬 어빌리티가 UI에 장착되어 있거나, 잠금해제되어 있는지 판단
- 장착하려는 Slot이 비워져 있지 않은 경우의 로직 수행
- 슬롯에 이미 장착된 어빌리티가 장착하려는 어빌리티와 같은 경우 : 클라이언트에게 장착 완료를 전파
- 슬롯에 이미 장착된 어빌리티가 패시브 어빌리티인 경우 : 패시브 효과 비활성화 + 브로드캐스트
- 이후 슬롯을 정리
- 슬롯 정리후에 장착하려는 어빌리티 관련 로직 수행
- 장착하려는 어빌리티가 패시브 어빌리티인 경우 : 해당 어빌리티 발동 + 패시브 효과 활성화
- 장착하려는 어빌리티에 UI의 태그 부여 + 변경사항 기록
- 이후 클라이언트에게 장착 완료를 전파

ClearSlot 함수를 위와 같이 수정하여 static 함수로 변경하여 발생하는 문제를 제거한다
3) AuraCharacterBase 클래스

패시브 어빌리티가 발동되면 재생할 FX 관련 멤버변수를 추가한다

생성자에 위의 로직을 추가하여 추가한 멤버변수를 생성하고
재생하는 나이아가라 컴포넌트들이 월드를 중심으로 회전하도록 설정한다
4) SpellMenuWidgetController 클래스

EquipButtonPressed 함수에서 이름을 변경한 함수를 호출하도록 수정한다
- 블루프린트 사이드
1) 패시브 스킬 GA의 블루프린트들

위와 같이 로그를 찍도록 ActivateAbility 이벤트와 OnEndAbility 이벤트를 구현한다
2) BP_AuraCharacter 블루프린트

멤버변수로 갖고 있는 PassiveNiagaraComponent들에 대한 PassiveSpellTag를 설정한다

사용할 NiagaraSystem들을 설정한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 비전 파편 스킬 - 2) 파편을 소환하는 위치 계산 (0) | 2025.12.06 |
|---|---|
| 비전 파편 스킬 - 1) 파편을 소환하는 원 설계 (0) | 2025.12.06 |
| 패시브 스킬 - 1) 패시브 스킬의 Tag 추가 + UI와 연동 (0) | 2025.12.05 |
| 전기 광선 스킬 - 최종) 감전 + 기절 상태 부여 (2) (0) | 2025.11.29 |
| 전기 광선 스킬 - 8) 감전 + 기절 상태 부여 (1) (0) | 2025.11.29 |