이번시간에는 가장 간단한 스킬 구현인 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 스킬구현을 마무리 할 것이다
그리고 워프 작업을 진행할 예정이다 무척 기대가 된다
'Unreal Engine > 게임클래스 - 언리얼엔진 기초' 카테고리의 다른 글
[50강] Wizard Skill(Warp) (0) | 2024.09.23 |
---|---|
[49강] Wizard Skill(Healing) - 2 (0) | 2024.09.23 |
[47강] Wizard Skill (3) | 2024.08.26 |
[46강] 전체 구조 및 버그 해결 (0) | 2024.08.26 |
[45강] Calling Weapon Attack (0) | 2024.08.26 |