이번시간에는 Warp 스킬 구현에 있던 버그를 해결 한 후 Throw 스킬을 구현할 예정이다.
버그 해결
원인 파악 : Flase 구간 처리가 없기 때문에 발생
어떤 동작이 끝나면 Montage 를 통해 Attack End 가 발행해서 End Spell 로 들어오는데, False 에서 끊어져 버리면 Attack End 가 발생할 수 없음. BP_Wizard 에서 Spell 에서 Idel 로 돌려주어야 하는데 이 부분이 막혀서 버그가 생기는 것이다.
해결법 : False 일때 1) Idel 로 돌려주기, 2) CanMove를 다시 True로 만들어 주는 작업
BP_WizardSkill_Warp > 이벤트그래프 > 다음과 같이 세팅
위와 같이 처리하면 이동불가능한 위치를 클릭하였다가 다시 Warp 를 수행해도 잘 작동한다.
던지는 마법은 Throw 구현
- ThrowItem은 Projectile(투사체) 를 가지고 움직이며 해당 객체를 Spawn 시켜서 사용할 것이기 때문에 Throw 에서 어떤 종류로 Spawn 시킬 것인가를 결정
- 자료형을 가지도록 작업을 해줘야 해서 Throw 가 조금 더 복잡한 스킬 구현
1. 기초작업
1) 콘텐츠 > BP_FireBall 삭제
2)Wizard > BP_WizardSkill_Heal 복제하여 "BP_WizardSkill_Throw" 생성
2. BP_ThrowItems 세팅
1) Wizard > "ThrowItems" 폴더 생성, 블루프린트 클래스 > Actor > "BP_ThrowItem" 생성
2) BP_ThrowItem > 이벤트 그래프 > Float 형 "Power" 변수 생성 및 다음과 같이 세팅
* Set Life Spawn : 일정 시간 뒤에 자동으로 제거되도록 해주는 함수
< 현재 상태 정리 >
- ThrowItem > Throw
- Throw 부모는 WizardSkill, owner 는 Wizard
3) BP_ThrowItem > "GetOwnerToThrow" 함수생성, 다음과 같이 세팅, 퓨어 체크
4) BP_ThrowItem > "GetOwnerToWizard" 함수생성, Wizard 을 구해올 수 있도록 다음과 같이 세팅, 퓨어체크
5) 뷰포트 > 컴포넌트 다음과 같이 세팅
- Sphere Collision 추가, Rename "Collision"
- Collision 밑에 그래픽을 위해 ParticleSystem 추가
- ProjectileMovement 추가
* Projectile : 투사체를 관리하는 컴포넌트 (ActorComponent)
Actor 컴포넌트라 자식으로 들어갈 수 없음
ParticleSystem > P_FireBall 넣어주기
- ProjectileMovement > 다음과 같이 세팅
이후 자식들도 다 상속받아서 바꿔주기만 하면 됨 아이스볼은 아이스로 등등
필요한 부분은 재정의 하면됨
6) BP_ThrowItem > "BeginOverlap" 함수 생성 및 다음과 같이 세팅
자식들은 전부다 던지는 거는 다 똑같이 데미지를 가진 형태가 되어 있음
부모에다 공격을 정의해놓으면 자식이 가져다 쓸 수 있음
- OtherActor : 부딫히는 애
- Explosion : 부딫히는 효과
- .
Location : 부딫힌 위치 보정값
* Particle Component 와 Particle System 은 다름, 다음과 같이 템플릿 안에 들어 있는건 System 이다
3. BP_ThrowItem_FireBall 세팅
1) BP_ThrowItem > 자손 블루프린트 클래스 생성 > "BP_ThrowItem_FireBall" 생성
2) BP_ThrowItem_FireBall > 이벤트 그래프, 부모 BeginPlay 를 해야 Set Life Spawn 받을 수 있어 두고 다음과 같이 세팅
- BeginPlay 이벤트
- On Component Begin Overlap
* "On Component Begin Overlap" 의 경우 다음에서 편하게 추가 가능
4. BP_ThrowItem > Begin Overlap 다음과 같이 편집
* 함수일때는 안에 있는 변수들 지역변수로 쓸 수 있음
5. BP_Weapon > Send Damage 다음과 같이 세팅
- 캐릭터에 맞으면 폭발
- 캐릭터에 맞지 않으면 폭발 안시킴
함수니까 실행핀이 안나와서 무조건 반환 1개로 나와서 Result 로 처리했는데 핀갈라서 매크로 처리 원하면 가능하다.
6. BP_ThrowItem > Begin Overlap > Send Damage 에 다음과 같이 Result 가 생겼는데, 다음시간에 이제 이 이후로 던지는 거 이어서 진행 예정이다
오늘도 재미있고 유익했다!
다음시간에 Part 3 이 끝나는데, 어떻게 마무리가 될 지 다음 시간이 기대가 된다.
'Unreal Engine > 게임클래스 - 언리얼엔진 기초' 카테고리의 다른 글
[52강] Wizard Skill (Throw) - 2 (0) | 2024.09.25 |
---|---|
[50강] Wizard Skill(Warp) (0) | 2024.09.23 |
[49강] Wizard Skill(Healing) - 2 (0) | 2024.09.23 |
[48강] Wizard Skill(Healing) - 1 (0) | 2024.08.26 |
[47강] Wizard Skill (3) | 2024.08.26 |