티스토리 뷰

Aura Projectile Spell

투사체 주문 Gameplay Abiltiy 클래스 생성에 앞서, 캐릭터 팔 길이를 조금 더 길게 조정하였다.

Target Arm Length : 800

 

그리고 우리는 저번 강의에서 만든 Projectile을 발사흐는 주문(Projectile Spell)을 구현할 예정이기에 새로은 Gameplay Ability 클래스를 생성한다.

이때 주의해야할 점은 단순히 Fire 계열 전용 클래스가 아니라 다양한 투사체 기반 주문에서 공통으로 사용할 수 있는 범용 클래스로 설계한다는 것이다.

 

Gameplay Ability System을 제대로 이해하려면 엔진에서 제공하는 GameplayAbility 클래스의 정애 내용들을 확인하면 좋다.

특히 함수 이름, 변수 이름, 주석, Ability 활성화 관련 함수 등 파일 전체를 한 번 훑어보는 것이 추천된다.

모든 코드를 완벽하게 이해할 필요는 없으며. GameplayAbility 클래스가 대략 어떤 기능을 제공하는지 파악하는 것이 목표이다.

 

클래스를 살펴보면 수많은 함수가 존재하지만, 그중에서도 가장 중요한 함수 중 하나가 ActivateAbility 함수이다.

해당 함수는 Ability가 실제로 활성화되었을 때 이 Ability가 무엇을 수행할 것인가?를 정의하는 핵심 함수이다.

따라서 커스텀 Gameplay Ability 클래스에서 ActivateAbility 함수를 Override하면 해당 Ability가 활성화되는 순간 실행할 로직을 직접 정의할 수 있다.

 

이러한 ActivateAbility 함수에는 C++ 버전과 Blueprint 버전이 존재한다.

ACtivateAbility는 C++에서 사용하는 Native 함수이며, Blueprint에서 사용할 수 있도록 노출된 버전인 K2_ActivateAbility는 Blueprint에서 일반적으로 Event ActivateAbility 형태로 표시된다.

즉 내부적으로는 K2_ActivateAbility지만, Blueprint에서는 사용하기 편하도록 표시 이름이 변경되어있다.

여기서 K@라는 명칭은 Inreal Engine의 과거 비주얼 스크립팅 시스템인 Kismet 2에서 유래한 명명 규칙이다.

 

이제 C++에서 직접 ActivateAbility 함수를 Overrdie해서 사용해보자.

FGameplayAbilitySpecHandle
- Ability Spec을 식별할 수 있는 Handle

FGameplayAbilityActivationInfo
- Ability와 관련된 Actor 정보를 가지고 있음

FGameplayAbilityActivationInfo
- 현재 Ability가 어떻게 활성화되었는지와 관련된 정보를 포함하는 구조체

FGameplayEventData
- Gameplay Event를 통해 Ability가 활성화된 경우 전달되는 데이터

 

이번에는 DebugMessage가 아니라 Blueprint에서 사용하는 Print String노드와 동일한 기능을 하는 UKismetSystemLibrary::PrintString 를 활용하에 테스트 출력을 시도할 것이다.

이렇게 하는 이유는 C++와 Blueprint에서 각각 Print Stirng을 실행했을 때 어떤 쪽의 메시지가 먼저 출력되는지 확인하여 호출 순서를 테스트할 수 있기 때문이다.

 

컴파일 후 해당 C++ 클래스를 바탕으로 블루프린트 클래스도 생성해주자. 

 

그리고 해당 클래스에서 Event ActivateAbility를 통해서도 Print String을 호출하자.

또한 Starup Input Tag로 마우스 좌클릭을 할당할 것이다.

 

플레이어 캐릭터 블루프린트로 돌아가서, Startup Ability에 기존 테스트 내용을 지우고, 방금 설정한 블루프린트를 할당한다.

 

컴파일 후 적을 향해 마우스 좌클릭을 하면 Ability가 활성화되었다는 문구를 C++, Blueprint 양측에서 확인할 수 있다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/07   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함