FireBall 원거리 공격 스킬 구현하기
FireBall 스킬 활성화 이펙트
마찬가지로 BP_Skill의 자손블루프린트로 BP_FireBall을 생성.
BP_FireBall 내에서 ParticleSystem 컴포넌트 추가 후, 디테일에서 Template로 P_Aura_Fire을 넣어준다.
그리고 Auto Activate의 기본값은 꺼주도록 했다.
(FireBall 스킬(C)을 활성화하였을 때, 캐릭터 주위에 불꽃 이펙트가 나오도록 하기 위함)
부모 BP_Skill에서 만들었던 이벤트 Activate / Deactivate 이벤트를 추가한 뒤, 각각 부모를 호출해주며 자신의 ParticleSystem 컴포넌트를 Activate / Deactivate로 켰다 껐다를 할 것이다.
이렇게 만들어두고, BP_Player의 SkillClasses에다가 BP_FireBall 스킬을 추가해두는 것도 잊지 말자.
이제 플레이하면 스킬 활성화에 따라서 불꽃 이펙트가 켜졌다 꺼지는 것을 볼 수 있다.
BP_FireBall 스킬 액션(LineTraceForObjects)
BP_FireBall 이벤트그래프에 BeginActionA 이벤트를 추가한 뒤, Get Destination Data 함수를 하나 생성한다.
(이 함수는 선택한 지점의 데이터를 얻어오는 역할을 할 것이다)
LineTraceForObjects
Get Destination Data 함수에서 해당 기능을 사용할 것이다.
월드 상의 Start와 End 두 좌표를 잡고 선으로 이은 뒤, 그 사이에 Object Types 대상이 존재한다면 Hit Result를 받아온다.
LineTrace의 시작은 캐릭터의 Camera위치에서 화면 중앙으로 뻗어나가야 한다.
따라서 Camera의 Location과 Forward Vector를 각각 받아와야만 한다.
스킬 클래스에서 사용자의 Camera를 받아오기 위해서 2가지의 방법이 있다.
1. Get Component by Class : 특정 Actor의 특정 컴포넌트가 있는지 확인하고 반환
되도록 일방적으로 컴포넌트를 받아오는 이런 함수는 사용하지 않는 것이 좋지만, 사용하게 된다면 데이터를 읽는 용도로만 사용해야 한다.
2. Get Instigator Controller에서 PlayerController로 형변환하여 CameraManager 받기
Get Player Camera Manager에서 Camera Location은 Start로 넣어주게된다.
Camera Rotation에서 Forward Vector를 꺼낸다음, 해당 Vector에 TraceDistance(변수로 승격 - 기본값 10000.0)를 곱한다.
마지막으로 Location을 더한 값을 End에 넣어주게 된다.
시작과 끝 지점을 만들었고 해당 선에 충돌하는 대상 Object Types를 정해줄 것이다.
우리가 FireBall을 발사하게 되면 캐릭터 대상만 맞도록 할 것이기 때문에 Pawn으로 설정해주었다.
- Actors to ignore : Trace 대상에서 배제될 것들
플레이어를 제외시킬 것이기 때문에 Get Instigator를 넣어주었다.
- Draw Debug Type : Line이 제대로 Trace되는지 확인하기 위한 방법(함수 실해 빈도에 따라서 설정해주면 됨)
ㄴFor OneFrame
ㄴFor Duration
ㄴPersistent
- Ignore Self : 자기 자신 제외 여부(BP_FireBall 자신을 말하는 것)
GetMontageData 함수를 구현했다면, 이벤트그래프 BeginActionA 이벤트가 호출 시 해당 함수를 부르도록 연결한다.
Skill Attack 애니메이션
BP_FireBall에서 오버라이드 Get Montage Data 함수의 반환 노드를 수정해준다.(Wizard_Attack_Montage)
이동 중에도 Skill 사용이 되도록 Wizard_Attack_Montage의 슬롯을 UpperBody로 설정해주었다.
ABP_Character에서 본마다 레이어로 블렌딩 노드의 디테일 Blend Root Motion Based on Root Bone를 켜준다.
* 루트 본에 따라 루트 모션 블렌딩 - 루트 모션을 빌려줄 때 루트 모션의 본 단위 블렌드 웨이트를 적용할지 여부.
'언리얼엔진' 카테고리의 다른 글
40. FireBall 스킬 피격처리 / 스플래쉬 데미지 / Actor 삭제 (0) | 2023.07.02 |
---|---|
39. FireBall 발사 / ProjectileMovement 컴포넌트 (0) | 2023.06.29 |
37. Dot, Cross Product / 삼각함수 atan2 (0) | 2023.06.27 |
36. SetTimerbyEvent / 이벤트 생성 (0) | 2023.06.25 |
35. FireStorm 스킬 / 삼각함수를 이용한 회전 / RotateVectorAroundAxis (0) | 2023.06.22 |