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

전기 광선 스킬 - 1) 화염구 스킬 변경

monstro 2025. 11. 20. 13:57
728x90
반응형

- 개요

기존의 화염구 스킬을 개선하여 클릭한 적의 방향으로 곡선 형태로 날아가도록 수정한다

레벨업하여 스킬을 강화할수록 날아가는 화염구의 개수를 증가시키도록 설정한다

 

- C++ 사이드

1) AuraPlayerController 클래스

나이아가라 컴포넌트 멤버변수 추가

 

 

AbilityInputTagReleased 함수에 위와 같이 로직을 추가하여 키를 눌렀다가 떼면 나이아가라 VFX를 재생한다

 

2) AuraProjectile 클래스

 

투사체SceneComponent 멤버변수를 추가하여 클릭하여 타겟팅한 적을 캐싱한다

 

3) AuraAbilitySystemLibrary  클래스

 

 

EvenlySpacedRotators 함수를 추가하여 공간에 고르게 분포된 Rotator가 저장된 TArray를 반환한다

로직은 다음과 같다

  • Rotator가 생성될 부채꼴의 가장 왼쪽 시작 방향을 계산
  • 인자로 받은 고르게 분포할 개수만큼 Rotator를 생성하여 컨테이너에 담아 반환
  • 인자로 받은 값이 1개 이하라면 1개의 Rotator를 생성하여 컨테이너에 담아 반환

 

4) AuraFireBolt 클래스

 

위와 같이 5개의 멤버변수를 추가한다

  • ProjectileSpread : 화염구 투사체를 생성할 부채꼴의 각도
  • MaxNumProjectiles : 최대로 생성할 화염구 투사체의 개수
  • HomingAccelerationMin : 타겟팅된 적을 향해 날라갈 화염구 투사체의 최소 가속도
  • HomingAccelerationMax : 타겟팅된 적을 향해 날라갈 화염구 투사체의 최대 가속도
  • bLaunchHomingProjectiles : 화염구 투사체를 날렸는지 여부

 

 

 

SpawnProjectiles 함수를 오버라이드하여 위와 같이 구성한다 

로직은 다음과 같다

  • 해당 함수는 서버에서만 수행할 수 있도록 설정
  • 투사체를 발사할 LocationRotation을 계산하고 설정
  • 현재 AuraFireBolt 어빌리티의 레벨만큼 생성되어 고르게 분포된 Rotator가 저장된 TArray를 생성
  • 생성된 TArray를 순회
    • SpawnActorDeferred 함수를 호출하고 스폰된 투사체에 대한 구성요소 설정
    • 타겟팅된 적이 캐싱되어 있다캐싱된 값HomingTargetComponent으로 설정
    • 캐싱되지 않았다새로운 SceneComponent를 생성하고 HomingTargetComponent으로 설정
    • 투사체의 추적을 활성화하고 FinishSpawning 함수를 호출하여 스폰 종료

 

- 블루프린트 사이드

1) BP_AuraPlayerController 블루프린트

 

클릭후에 재생할 NiagaraComponent 멤버변수를 설정한다

 

2) GA_FireBolt 블루프린트

 

생성할 화염구 투사체에 대한 멤버변수를 설정한다

 

ActivateAbility 이벤트 수정 (1)

 

ActivateAbility 이벤트 수정 (2)

 

ActivateAbility 이벤트를 위와 같이 수정한다

우선, 마우스 커서에 타겟팅된 TargetActorMouseHitActor 멤버변수에 캐싱한다

화염구 어빌리티에 대한 Tag가 활성화되어 Event가 실행되면 SpawnProjectiles 함수를 호출한다

이후 해당 함수에 화염구가 날라갈 위치 + 화염구를 생성할 소켓 + MouseHitActor를 매개변수로 넘겨준다

 

- 최종 실행 결과

 

728x90
반응형