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

[49강] Wizard Skill(Healing) - 2

whereareyoung 2024. 9. 23. 00:24

이번시간에는 플레이어에 Health 값을 올리는 함수를 만들고 연결해 Healing 스킬을 구현할 것이다. 

그리고 커서를 그리는 작업까지 진행 해 볼 예정이다. 

 

진행에 앞서 ABP_Player > 애님그래프 > 블렌드 포즈 > Wizard 블렌드 시간 다음과 같이 변경하여 준다. 

애니메이션 전환시간이 너무 오래 걸려서 이 단계를 줄여주기 위해 위와 같이 설정하여 준다. 

Drawing Sweathing 처럼 만들어도 되는데, Wizard 는 위와 같이 구현하겠다. 

 

Health 값을 올리는 함수 만들기 

character 에 어떤 명령을 내리기 위해서는 BP_Weapon 에서 통신을 하여야 한다. 이를 위한 함수를 만들어 준다. 

1. BP_IWeapon 에 "Weapon_IncreaseHealth" 함수를 생성하고 다음과 같이 Float 형 "Health", "Result" 변수를 생성하여 준다.  

여기에서 HP를 받아다가 리턴을 할 예정이다. 

Health 가 만땅찼다, 그러면 100이 아니면 적용한 만큼이 리턴이 될 예정이다. 

 

2. "Weapon_IncreaseHealth" 함수를 복제하여 "Weapon_DecreaseHealth"를 만들어 준다. 

 

3. BP_Plyaer > Float 형 변수 "Health", "MaxHealth" 생성 후 기본값 "100.0" 으로 세팅

 

 

 

4. 다음과 같이 정리 

Health 는 그냥 자기 자신이 가지고 있는 것이라 그냥 두고, MaxHealth는 뒤에 가면 데이터시트에 의해 결정되기 때문에 Option 탭에 정리 

 

5. Begin Play Event > 다음과 같이 세팅 

Play 시 Health 가 MaxHealth 가 되도록 세팅

 

6. BP_Player > Weapon Increase Health 다음과 같이 세팅, 선택 된 부분 복사, 붙여넣기 하여 Weapon Decrease Health 다음과 같이 세팅 

Clamp : 최소값 이하면 최소값을, 최대값 이상이면 최대 값을 아니라면 원래 값을 리턴함 

예를들어 Min 0.0, Max 1.0 일 경우 0.0보다 작으면 그 값을, 1.0 보다 크면 그 값을, 그 중간 값이면 그 중간값을 리턴해줌. 

 

7. BP_Weapon > Increase Health 함수 생성 및 다음과 같이 세팅, 복사 해 Decrease Health 생성 및 다음과 같이 세팅 

* GetCanMove 에서 함수 복사해 오면 더 빠르게 구현가능 

 

 

8. BP_WizardSkill_Heal > 이벤트 그래프 > Float 형 변수 "HealPoint" 생성, 값 10.0 세팅 

 

9. BP_WizardSkill_Heal > 이벤트 그래프 > End Spell 이벤트 다음과 같이 세팅 

 

10. BP_WizardSkill_Heal > 이벤트 그래프 

애니메이션 플레이 속도가 조금 느리므로 다음과 같이 1.5로 세팅해 애님을 빠르게 플레이 시켜 플레이를 쾌적하게 해 준다. 

 

테스트는 차후에 진행하고, 워프를 진행해보도록 하겠다. 

 

커서 그리기

Warp 구현에 앞서, 커서를 그리는 작업을 진행한다.

전방으로 10만큼 워프하기 등도 구현 가능하지만, 마우스가 지면에 닿는 곳으로 특정 지점을 찍고 워프를 하는 것이 유저에게 더욱 좋은 플레이 경험을 제공할 것이기 때문이다. 커서가 땅의 어느지점을 가르키고있는지를 구하고 그 지점에 뭔가를 구할것이다. 그리고 출력이 되어야 하니 그래픽을 제작한다. 

 

1. M_Cursor 어셋을 콘텐츠 > Material 에 넣어준다. 

이 어셋을 살펴보자면, 면으로 보면 다음과 같이 그래픽이 보인다. 

살펴보면 Radial Fradient Exponential 함수를 활용해서 구 형태를 만들어 낸 것이다. 

 

2. BP_WizardSkill_Warp > 이벤트그래프 > 컴포넌트 추가 > Decal, Decal Material 에 M_Cursor 를 넣어준다. 

* Decal : 자동차의 스티커처럼 메시에 이미지를 붙이는 것처럼 출력하는 컴포넌트 

 

3. 다음과 같이 Tick 이벤트를 설정해 준다 (매 프레임마다 실행)

Tick 을 활용해 Decal 의 월드 위치를 지정해주어 그리는 구현을 해준다. 

여기까지 진행하여 주고 다음시간에 이어 하도록 하겠다. 

 

Warp구현

1. 콘텐츠 > Weapons > Wizard > BP_WizardSkill_Heal 을 복제하여 "BP_WizardSkill_Warp" 를 만들어 준다. 

 

2. Montages > "Wizard_Heal_Montage" 복제하여 "Wizard_Warp_Montage" 생성하여 준다. 

 

그리고 BP_WizardSkill_Warp 애님을 "Wizard_Warp_montage" 로 변경하여 준다.

* 일단 같은 애님을 사용하는데, 나중에 변경 될 수도 있으니 구분하여 준다. 

 

그래도 주말에 작업이 조금 진행되어 좋다. 내일 퇴근하고 이어서 진행하도록 하겠다.