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

[30강] Player Combo - 4

whereareyoung 2024. 6. 30. 21:02

콤보 동작 퀄리티 높이기

동작이 뚝뚝 끊기는 이유는 "EndAttacking" 노티파이에서 콤보가 있는지 체크해서 이기 때문에, 그 앞에 Combo가 있는지 체크하는 Notify를 하나 더 생성할 예정이다. 그래서 Call이 되면 "End Attacking" 보다 빠르게 더 먼저 다음 동작을 처리할 수 있도록 할 예정이다. 

따라서 콤보 입력이 있었다면 다음 동작(CheckNextCombo) 로 넘어가고, 없었다면 "End Attacking" 이 처리될 수 있도록 해야한다. 

 

1. Nofity > "AN_CheckNextCombo" 생성 후 다음과 같이 세팅하여 준다. 

1) GetNotifyName

2) Received_Notify

BP_Player > Attacking Event > CustomEvent "CheckSwordNextCombo" 생성하여 준 후 다음과 같이 세팅한다. 

 

2. BP_Player > Attacking Event > CustomEvent "CheckSwordNextCombo" 세팅

 

 

* 밑에 "End Attacking" CustomEvent 도 후에 다른 무기 추가 구현시 헷갈리지 않도록 하기 위해 Rename, "EndSwordAttacking" 으로 바꾸어준다.  맨손 공격은 칼빼는거 있는거, 없는 것 빼면 나머지 다 똑같기 때문에 별도로 구현은 하지 않았지만 후에 추가 가능하다. 

 

 

3. Attack Montage 들에 CheckNextCombo 노티파이를 다음과 같이 세팅하여 준다. 

1) Attack 1번 

 

2) Attack 2번

 

4. Attack 3번의 섹션을 선택하고, 플레이 시간을 1.5초로 줄여준다.

공격 후 Idle 로 돌아오는데 까지 시간이 너무 오래걸리기 때문에, 쾌적한 플레이를 위해 이를 처리하여 준다. 

 

이렇게 하면 노티파이 값도 다 땡겨지기 때문에 다음과 같이 처리하여 준다. 

특히, EndAttacking 노티파이를 빨리 끝 내 줄수록 Can Move 가 True가 되어 움직일 수 있는 시간이 더 빨라진다. 

 

여기까지 기본 콤보 구현은 완료되었으나, 보편적인 콤보 구현에는 효과가 추가되는게 보편적이다.

따라서 마지막 공격의 효과적인 스킬 구현을 위해 두가지 효과를 더 추가할 건데, 하나는 세번째 동작에서  카메라 흔들림 효과이다. 

또한, 세번째 막타에서 적이 피격이 되었다면, 적에게 번개를 내리치는 효과를 추가하도록 하겠다. 

 

카메라 흔들기 

1. "Player" > 블루프린트 > CameraShake 를 상속받은 "BP_CameraShake" 생성

카메라를 흔드는 것은 어자피 카메라가 플레이어 에게 붙기 때문에 

카메라는 플레이어의 컨트롤러에 붙어있으므로 플레이어 컨트롤러를 통해 카메라 관리자를 가져옴 

 

 

 

1) Duration : 얼마만큼의 시간동안 흔들 것이냐 

2) 흔들리는 데까지 가는 시간 

3) 흔들리고 나서 원래대로 돌아오는 시간 

4) 카메라의 회전으로 흔들리는 것

* 카메라를 회전으로 흔드는 경우는 거의 없음 

5) 카메라의 이동으로 흔들리는 것 

* x (전방) 일반적으로 흔드는 경우는 잘 없음

* 보통 y, z만 흔들음 

 

2. "BP_CameraShake" > Loc Oscillati.. > Amplitude 값 100, Frequency 값 100 주기 

 

- Amplitude : 진폭

- Frequency : 주기 (진동 수)

* Waveform 에 Perlin Noise 는 보통 2D에서 X, Y 2D축을 부드러운 렌더 값을 만들기 위해 사용. Initial Offset 이 Random 값일때 값이 렌덤으로 나오는데, Perlin Noise: 이전값과 현재값을 어느정도 구간을 정해서 나오기 때문에 이러한 구현으로 자주 사용을 함 

 

3. Notify > "AN_CameraShake" 노티파이 생성

Attack3 몽타주에 Camera Notify를 하나 심어서 플레이를 해 줄 예정이다. 

1) Get Notify Name 

2) Received Notify 

플레이어 컨트롤러를 가져오고, 그 안에 카메라 매니저가 있어서 이거를 가져와서 카메라 흔들림 효과를 넣어줄 예정이다. 

"BP_Player" > BP_Player(셀프) 정보를 살펴보면 다음과 같다. 

 

그래서 Get Player Controller > Player Index 0 해서 Controller 를 가져와 준다. 

 

* 위와 같이 Character 를 가져오고 싶을때 "Get Player Character" 를 사용할 수도 있다. 

 

Scale : 진동 수 정해놓은 것에 얼마만큼 곱해서 플레이 해 줄지 

Place Space : Local 로 설정 해 두면 거의 문제 없음 

- Local : 카메라 자기가 바라보는 상황에서 흔들지

- World : 카메라 전체에서 흔들지

User Play Space Rot : 회전구간, 회전을 얼마만큼 한 다음에 흔들건지에 대한 값

 

4. Notifies 가 많아졌으니 Attacking, Sword 파일을 만들어서 다음과 같이 깔끔하게 정리하여 준다. 

 

5. Attack 3번에 "Camera Shake" notify 추가를 하여준다. 

 

다음시간에 몽타주 플레이 속도를 잠깐 조정하고, 번개 효과를 진행할 예정이다. 

효과와 에셋은 저번시간에 받아놓은 에셋을 편집하여 사용할 예정이다. 

 

이번 주말 콤보를 구현하여 너무 뿌듯하고, 효과구현은 내일 퇴근 후에 이어 진행하도록 할 예정이다.

너무 기대가 된다! 

 

 

'Unreal Engine > 게임클래스 - 언리얼엔진 기초' 카테고리의 다른 글

[32강] Sword Trail (Material)  (0) 2024.07.03
[31강] Particle Effect  (0) 2024.06.30
[29강] Player Combo - 3  (1) 2024.06.30
[28강] Player Combo - 2  (0) 2024.06.25
[27강] Player Combo - 1  (1) 2024.06.16