Unreal Engine/게임클래스 - 언리얼엔진 기초

[48강] Wizard Skill(Healing) - 1

whereareyoung 2024. 8. 26. 23:57

이번시간에는 가장 간단한 스킬 구현인 Healing 을 진행하고 다음시간에는 Warp 를 만들 예정이다.

이것들을 참고하며 스킬을 정의하는 방식에 대해 익숙해진다면 스킬 트리를 늘리는 것은 어렵지 않다. 

 

Healing 구현 

1. BP_Sword, BP_Wizard > Print String 으로 테스트 해 두었던 것은 지우기 

 

1. BP_WizardSkill > "GetOwnerToWizard" 함수 생성, 다음과 같이 세팅 및 퓨어체크 

 

"GetOwnerToWizard" : wizard skill 에 대한 owner 를 wizard 를 주어Get Owner 하면 Wizard 가 나옴 

* tip : 리턴 핀 쪽으로 변수를 끌어가면 자동으로 파라미터가 등록된다. 

 

2. "BP_WizardSkill" > 자손 블루프린트 클래스 "BP_WizardSkill_Heal" 생성

 

미리 만들어 둔 이벤트로 다음과 같이 세팅, Wizard Attack 에서 Call 할 예정이다. 

* Spell 에 대한 처리가 호출되는 지점에서 이미 처리가 되어 있기 때문에 자신의 역할만 수행하면 됨 

- 마법을 쓸때 힐링을 할때, wizard 웨폰에 있는 Set can Move 를 가져와서 이동할 수 없게 함 

- Character > GetOwner to Wizard > Get Owner 하면 얘의 캐릭터가 나옴 

 

다음 작업으로는 Wizard Skill 을 소유하고 있는 것이 Wizard, Wizard 를 소유하고 있는 것이 캐릭터인데 이것을 가지고 몽타주를 플레이 시킬 예정이다. 

 

1) Wizard_Spell 에셋을 콘텐츠 > Character > Animations > Wizard 로 임포트 한 후, 생성 > 애님 몽타주 "Wizard_Heal_Montage" 생성 한다. 

 

2) "Wizard_Heal_Montage"를 Montages 폴더로 이동한 후, 다음과 같이 세팅한다. 

- 전체 이동을 금지시킬 것이기 때문에 FullBody 로 세팅한다. 

 

3) "Wizard_Heal_Montage" 에 다음과 같이 End Attack 노티파이를 구현한다. 

End Attack 에서 Spell End 를 Call 할 것이다. End Attack 은 노티파이에의해 이루어지니 연결을 해 놓을 것이다. 

들어올리는 동작을 할때 파티클을 플레이 시켜 힐이 되는 듯한 구현을 할 것이다. 

 

4) "InfinityBlade" 에서 힐링 파티클 어셋 "P_AOE_Ice_CircleAttack", "P_Cube_Mesh_Test" 두 가지 이주로 가져오기 

폴더를 옮겨버리면 깨져서 귀찮아지기 때문에 남기고 Effect 만 옮겨준다. 

두가지를 Effect 폴더에 옮긴다. 

 

5) Notify 에 "PlayParticleEffect" 를 다음과 같이 추가하여 준다. 

 

Anim Notify 에 이주해서 가져온 파티클 "P_AOE_Ice_CircleAttack" 를 붙여준다. 

그랬을 때, 파티클이 생성되지도 않고, 에러 메세지가 지속적으로 뜬다.

* tip : 개발자툴 > 출력로그로 에러등 체크가능

 

이유는 "PlayParticleEffect" 로 파티클을 플레이 할때, 파티클이 Roop가 설정되어 있으면 안되기 때문이다. 따라서 파티클을 다음과 같이 편집한다. 

 

 Sparks > Duration > Emitter Loops : 1 

 

이건 비주얼을 상승시키기 위해,  Sparks > Lifetime > Distribution > Max > "3.0"

 

Particle Emitter > Duration > Emitter Loops : 1 

 

이건 비주얼을 상승시키기 위해, Particle Emitter > Spawn > Distribution > Constant > "30.0"

 

루프를 제거해주니, 이펙트가 정상적으로 출력되는 것을 확인할 수 있다. 

 

z 위치값을 50 줘 이펙트를 자연스럽게 한다. 

 

3. BP_WizardSkill_Heal > 이벤트그래프 다음과 같이 세팅한다. 

Heal Skill 을 사용할 경우, 움직임이 금지되고 방금 만들어 둔 Montage가 플레이 된다. 

 

4. End Spell 이벤트를 다음과 같이 설정하여 준다. 

- 스킬시전이 끝나면 움직일 수 있도록 

 

 

이제 플레이어 Health 를 올려야 하는데 그전에 다른 작업을 마무리 후 진행할 예정이다. 

1. BP_Wizard > 이벤트 그래프 > "BP_Wizard_Skill" 형 "Skill"

 

2. BP_Wizard > 이벤트 그래프 > "BP_Wizard_Skill_Heal" 형 "Heal" 생성

 

3. BP_Wizard > 이벤트 그래프 다음과 같이 세팅 

* 시퀀스 사용이유 : 뒤에 heal, Warp, throw 등 추가 예정이기 때문에

 

4. BP_Wizard > 이벤트 그래프 > Spawn& Attach Heal 다음과 같이 세팅

 

5. BP_Wizard > 이벤트 그래프 다음과 같이 세팅 

뒤에 가면 얘도 무기처럼 마법 스킬이 교체 될 것이다. 그 처리를 하여야 하지만 일단 임시로 이렇게 처리 해 둔다. 

 

6. BP_Wizard > 이벤트 그래프 > Attack 이벤트 다음과 같이 세팅 

Attack 에서 현재 선택된 스킬이 Null 이면, 아무 작업도 하면 안되므로 Null 인지 아닌지 is valid 로 검증하여 준다. 

- 공격이 가능하고 스킬에 해당 스킬이 입력되어 있을 때 실행 

 

7. BP_Wizard > 이벤트 그래프 > End Attack 이벤트 다음과 같이 세팅 

 

8. Heal 구현 테스트, 및 BP_Wizard > "ParticleSystem" 컴포넌트 삭제 

* 추후 재 생성 예정 

 

9. 게임의 쾌적도를 놓이기 위해

1) Wizard_Heal_Montage > Blend Option > Blend Out > Blend Time > " 0.1 "

2) 노티파이 "End Attack" 조금 더 빠르게 설정

 

3) Montage Section 끝 시간 " 1.8 " 으로 변경

 

다음시간에는 HP 를 채워주는 명령 작업을 하고, Heal 스킬구현을 마무리 할 것이다 

그리고 워프 작업을 진행할 예정이다 무척 기대가 된다