본문 바로가기
Unreal Engine Practice

Unreal Engine 4 Enemy(3)

by Srff5123 2024. 2. 2.
728x90

이번 글에서는 플레이어가 공격을 할때 번개 이펙트와 함께 콤보공격을 만드는것을 하였다.

 

우선 콤보공격으로 만들어줄 공격모션 세개를 다운받아 몽타주로 만들어준다. 그다음  콤보 테이블을 만들기 위해

엑셀을 통하여 데이터 테이블을 만들어준다. 위와 같이 표를 활용하여 csv 파일로 만들어주고, 언리얼에서 

 

다음 블루프린트의 구조체를 생성하여 위의 파일을 받아주기 위해 값 설정을 해주고, csv 파일을 언리얼에 적용해주면

데이터 테이블 옵션을 선택할수 있는데 아까 만들었던 Fcombotable로 하여 적용을 해주면 맨 위의 사진과 같이

잘적용이 되는 것을 확인할 수 있다. 이와 같이 안될경우에는 아마 경로가 잘못되었을 가능성이 크다.

 

 다음 Estate이름의 열거형을 만들어주어 상태를 네가지로 나누어 준다.

 

이제 콤보공격을 하는것은 플레이어 이기때문에 BP_Player로 이동하여

저번에 만들었던 Sword Event로 간다. 저번에 하였을 때는 Bool변수를 많이 받아놓아 하였는데 조금 간소화를 시켜준다.

그러기 위해 우선 State 변수를 Estate유형으로 만들어준다.

 

기존에 있던 상태를 대신해 이런식으로 수정을 해준다. 

 

그다음 함수 Can Attack을 만들어 공격이 가능한 상태 

Drawn 칼을 뽑은상태 그리고 서있을 경우 두개가 동일할때 공격이가능하도록 유도를한다.

 

이제 콤보공격을 위해 데이터를 가져올건데 데이터는 게임이 시작이 되었을때 가져와야 되기때문에

BeginEvent에서 시작을하여 Get Data Table Row Names를 연결하여 콤보테이블을 가져오고

여러개의 데이터를 가져올것이기 때문에 For Each Loop를 통하여 반복을 돌려주며

데이터 테이블 행을가져와 Sword Combo Datas만들어 Add를 통해 데이터를 get해준다.

이렇게 게임을 시작할때 데이터를 받아주고,

 

함수 Play Sword Combo 만들어 주고

콤보를 할때 공격의 카운터를 세어주기 위해 Sword Combo Count변수를 만들어준다.

 

다음 해당 함수에서 Sword Combo Dates get을 하여 주는데 구조체 핀 분할을 해주어야 저런식으로 출력값이 4개로

나오게 된다. 다음 콤보가 동작될때 움직이지 못하게 Can Move를 해준다.

 

이제 Attack Event로 와서  위와 같이 Enable,Exist,Last  Bool 변수를 만들어준다.

 

그다음 Attacking입력액션에서 Branch를 통하여 Enable Next Combo 다음 동작이 True면 Sword Combo Count를 GET하여 ++을 해주고, Sword ExIst Combo값을 True로 Enable Next Combo를 False로 Set 해준다.

 

그다음 False 고 Can Attack이 True이면 State상태를 Attacking으로 Set 해주고 Plat Combo Montage를 재생시켜준다.

 

다음 커스텀이벤트로 Check SwordNextCombo 다음 콤보에 대한 체크를 위한 이벤트를 만들어주고

SwordExistNextCombo를 Get하여 그 값이 True일때 몽타주를 재생시켜주어 마지막 콤보에 Set을 해준다.

 

다음 EndAttacking 이벤트에서 공격이후의 상태를 Set 해준다.

Check

 

이제 콤보공격을 할경우 몽타주에 Notyfied를 넣어주어 관리한다 그러기 위해 Notyfied를 만들어준다.

CheakNextCombo와 노티파이 스테이트로  EnableNextCombo를 만들어준다.

이름은 각자 설정하면 된다. 그다음

이제 설정을 위해 몽타주로 이동하여

 

위와 같이 공격 몽타주 1 2에 동일하게 설정을 해 주고,

3은 CameraShake를 제외한 나머지만 동일하게 설정해준다.

 

위와 같이 설정을 완료하면 콤보공격이 가능하다

 

이제 다음 콤보공격중 이펙트와 카메라쉐이크를 넣어보자

자신이 원하는 이펙트 파티클을 다운하고,

마지막 공격에 넣어줄것이기 때문에 

 BP_Player로 이동하여 커스텀이벤트 PlayLastComboEffect를 만들어준다.

다음 SwordLastCombo의 값을 get하여 True일 경우 Spawn Emitter at Location을 통하여 재생을 시켜주고, 

SwordLastCombo의 값을 False로 바꾸어준다.

 

다음 CameraShake를 넣어주기위해

Bp_CameraShakeBase를 만들어주고 패턴을 웨이브 오실레이터 카메라 셰이크로 바꾸어준다.

 

 

다음 몽타주에 넣어주기 위해 Notyfied를 만들어 아까 만들어준 BP를 Start Camera Shake에 넣어주고,

아까 공격 3 몽타주 사진에 있는 것과 같이 Notyfied를 설정해주면 완료이다.

 

 

이렇게 완성이된다.

 

728x90

'Unreal Engine Practice' 카테고리의 다른 글

Unreal Engine Wizard  (2) 2024.02.06
Unreal Engine 4 Sword Effect  (0) 2024.02.05
Unreal Engine 4 Enemy(2)  (0) 2024.02.02
Unreal Engine 4 Enemy(1)  (1) 2024.01.29
Unreal Engine 4 Weapon(3)  (2) 2024.01.26