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

전기 광선 스킬 - 2) 광선 계열 스킬 추가 + 그 외의 수정

monstro 2025. 11. 21. 20:14
728x90
반응형

- 개요

투사체를 발사하는 스킬 어빌리티 외에 광선을 생성하여 발사하는 스킬 어빌리티를 추가한다

그외에 일부 코드를 수정한다

 

- C++ 사이드

1) AuraProjectile 클래스

 

Destroyed 함수에 위와 같이 로직을 추가하여 투사체가 파괴되면 

날아가는 소리를 재생하는 AudioComponent를 제거하도록 수정한다

 

 

OnHit 함수에도 동일한 로직을 추가하여 클라이언트에서도 AudioComponent를 제거한다

 

2) AuraBeamSpell 클래스

 

광선을 생성하여 적을 공격하는 어빌리티 클래스인 AuraBeamSpell 클래스를 생성한다

멤버변수의 구성은 위와 같다

  • MouseHitLocation : 마우스 커서가 클릭한 위치
  • MouseHitActor : 마우스 커서로 클릭한 Actor
  • OwnerPlayerController : 해당 클래스의 Owner의 PlayerController
  • OwnerCharacter : 해당 클래스의 Owner

 

 

StoreMouseDataInfo 함수의 로직은 위와 같다

매개변수로 받은 HitResult유효하다면, 클릭한 위치클릭한 Actor를 캐싱한다

그렇지 않은 경우 어빌리티를 Cancel한다

 

 

StoreOwnerVariables 함수의 로직은 위와 같다

어빌리티에 대한 CurrentActorInfo를 가져와 PlayerControllerAvatarActor를 캐싱한다

 

3) CombatInterface 클래스

 

SetInShockLoop 함수를 추가하여 캐릭터의 광선계열 스킬의 사용시간을 설정한다

 

4) AuraAbilitySystemComponent 클래스

 

입력된 키의 Tag와 연결된 어빌리티를 실행하는 AbilityInputTagPressed 함수에서

어빌리티를 성공적으로 실행한 후에 예측 키와 함께 InputPressed 이벤트를 서버에 복제하는 로직

위와 같이 수정하여 AbilityInputTagPressed 함수에서 엔진의 버전에 맞게 예측키를 사용한다

 

 

어빌리티와 연결된 Tag를 갖고 있는 키의 입력을 뗀 경우 실행하는 AbilityInputTagPressed 함수에서도

동일하게 로직을 수정하여 엔진의 버전에 맞게 예측키를 사용하도록 한다

 

5) AuraPlayerController 클래스

 

AbilityInputTagPressed 함수를 위와 같이 수정하여 PlayerController에서 키를 입력하면

ASCAbilityInputTagPressed 함수를 호출하도록 설정한다

 

- 블루프린트 사이드

1) AM_Cast_Electrocute 애니메이션 몽타주

AnimNotify 구성

 

Event Tag의 구성

 

Tag 추가

 

전기 충격 어빌리티의 애니메이션 몽타주를 추가하고 Tag를 추가하여

해당 애니메이션 몽타주에서 추가한 Tag를 사용하도록 설정한다

 

2) GA_Electrocute 블루프린트

 

 

해당 어빌리티에 대한 Tag를 위와 같이 설정한다

 

ActivateAbility 이벤트 로직 (1)

 

ActivateAbility 이벤트의 로직을 위와 같이 구성한다

우선, 마우스 커서가 가리킨 첫번째 대상을 가져와 StoreMouseDataInfo 함수에 인자로 넘겨주고

이후, StoreOwnerVariables 함수를 호출하여 OwnerOwner의 Controller를 캐싱한다

 

ActivateAbility 이벤트 로직 (2)

 

이후의 로직은 위와 같다

첫 번째 시퀀스에서는 모션 워핑을 적용하고 AM_Cast_Electrocute 몽타주를 재생한다

재생한 몽타주의 AN을 통해 Tag가 활성화되면 InShockLoop 함수를 호출한다

두 번째 시퀀스에서는 어빌리티를 발동한 키떼기를 기다렸다가 어빌리티를 종료한다

 

- 최종 실행 결과

 

728x90
반응형