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

[26강] Damaged Enemy - 4

whereareyoung 2024. 6. 10. 23:55

이번 강의를 통해서는 최종적인 사망 처리를 완료하고, Enemy가 피격당한 후 맞는 동작을 처리할 예정이다. 

그 후 데이트 시트 (플레이어 콤보에 사용할 데이터를 만드는 작업) 을 진행할 예정이다. 

 

사망처리 

현재 구현에는 버그가 있는데, 이미 사망한 상태에서 맞았을때 계속 사망을 처리한다는 것이다. 

사망에 한번 들어갔다면, 더 이상 사망을 반복할 필요가 없다. 

사망에 한번 들어간 후 이를 반복하지 않게 처리하여 주어야 한다. 예를들어, 변수를 활용해 처리하는 방법이 있다. 

 

지금 사용할 방법은 흐름을 제어하는 것이다. 
Google 에 언리얼 흐름제어 관련해 써치를 진행하면 Do any / While / Sequence / For each / Gate 등이 뜬다. 

이런것들이 프로그래밍에서는 그냥 구현하면 되는데, 블루프린트에서는 구현이 꽤나 복잡하기 때문에 미리 제공해 준다. 

 

- Do Once : 한번만 실행되도록 해줌 

1) Reset : 이 핑이 들어올때까지 더 이상 진행하지 않음

2) Start Closed : 최초에 닫은상태로 진행할 것이냐, 열린상태로 진행할 것이냐 

- Reset : 입력되면 다시 한번만 실행할 수 있도록 열어줌 

- Start Closed : 닫힌 상태로 (실행하지 못하게 하는 상태로) 시작 

 

오늘은 다음과 같이 "Do Once" 를 활용하여 처리 해 줄 예정이다. 

현재는 Start Closed 를 열은 상태로 진행해서 사망이 진행되면 자동적으로 닫힐 예정이다.

그래서 딱 한번만 진행하게 될 것이며, 들어왔을 때 어디선가 Dead 함수를 써야 할 경우가 있어서 Boolean 변수 "Dead"를 생성해준다. 

 

Dead를 True 로 만들어주고 나서 이렇게 쓰면 정상적으로 작동된다.

 

물론, if 로 Dead 가 True 였느냐를 검사 할 수 있는데 위와 같이 쓰는게 더 깔끔하고 편하다. 

 

하지만 여전히 버그가 존재하는데, 엎어진 상태에서도 제거가 된 상황은 아니기 때문에 타격이 들어간다. 

그래서 사망이 시작되기 전에 다음과 같이 세팅 해 충돌체를 꺼 버릴 예정이다. 

아직 칼충돌체 설정은 되지 않았는데, 칼 시스템을 완료 후 업데이트 예정이다. 

 

 

Hitting 동작 처리 

맞았을 때 피격동작과 맞았을때 살짝 뒤로 밀리는 것에 대한 처리를 해 줄 예정이다. 

1. Hit reaction 애니메이션 파일을 "Animaion" 폴더에 넣어준다. 

2. 생성 > 애님몽타주 생성 > "Montages" 폴더에 옮겨준다. 

3. "Upper Body" 슬롯으로 바꾸어 준다 

* 피격동작을 전신으로 플레이 시켰을 경우, 이동할때 hit 되었을때 플레이 되는 시간만큼 멈춰야 함 그리고 다시 이동해야 함 따라서 전체로 바꾸는건 AI 작업 진행할 때 진행하는 것이 효율적이기 때문에 현재는 UpperBody로 두도록 함 

4. 블루프린트 세팅 

1) Anim Montage : Hit_Reaction_Montage 설정 

2) In Play Rate(플레이 속도) : 3.0 으로 늘려주기 

 

5. 밀림 처리 

뒤로 밀리는 것을 처리할건데, 이런 원래 "Launch" 라고 해서 늘려주는 함수가 있는데, 이 함수의 경우 맞았을 때 기본 점프로 간주되는 경향이 있어서 꼬임 현상이 발생할 수 있음

따라서 "AddActorWorldOffset" 사용해 다음과 같이 처리 

AddActorWorldOffset : 현재 월드 위치에서 상대적인 위치로 지정해 이동 (순간이동 등 처리에 사용, 훙 날라갈 수 있는 것)

1) 전방을 구해서 뒤집어 주고, 수직축을 빼고 Normalize 2D를 사용

* 방향 벡터는 normalize해서 씀 

2) 후방축을 쓸건데 가벼운애도 있고 무거운 애도 있음 캐릭터 무브먼트에 Mass (질량) 이 있는데 질량을 가져와서 무거운 아이는 더 많이, 가벼운 아이는 작게 밀리게 처리 

 

Alt + Drag 로 여러마리로 테스트 해보면 다음과 같다. 

피격처리 애니메이션, 사망 등 조화롭게 잘 이루어짐 

 

6. 완료하였으므로 다음과 같이 정리하여 준다. 

 

 

공격 콤보 처리 

이제 플레이어의 공격 콤보 처리를 진행하도록 하겠다. 

0) 이전에 다운받아 두었던 파일말고 다른것을 사용한다고 하셔서 "Standing Melee Attack_2" 파일을 (칼을 올려치는 포즈) 다시 임포트 해 준다. 

1)

 

 

다리를 보라. 강사님이 주신 파일이 깨져서 이전에 내가 연구했던 것과 같은 방법으로 제대로 불러왔다. 

 

Standing Melee Attack Backhand > Standing Melee Attack_2 로 Rename 후 임포트 완료 

 

이제 피격 및 사망처리가 완료되었으므로 다시 플레이어 작업으로 돌아와

공격 콤보 처리를 구현하기 위한 데이터 시트 작성을 진행해 보도록 하겠다

데이터 시트를 잘 이해하면 변수로 일일히 작업하지 않고 데이터 시트로 작업 가능하니 익혀두면 좋다

* 후에 아이템 처리에도 비슷한 방식으로 진행 

 

데이터 시트 작성 

데이터 시트 : 각종 데이터를 테이블 형태로 저장해놓은 파일 형태 

종류 : Binary(2진형태), Text, JSON, CSV(가장 단순한 형태의 포멧)

 

위의 모든 종류 다 언리얼 안에서 처리가 가능하지만, 오늘은 CSV 데이터 기반으로 작업할 예정이다.

CSV 는 메모장, 엑셀등에서 작성 및 저장이 가능한 포맷이다. 

* 프로그래밍에 있어서도 답을 검증하는 과정 등 엑셀과 수식등이 많이 쓰인다

 

1. 엑셀작업

* 경로 : Montage. 이하로 삭제하여도 작동은 하나, 언리얼에서 권고하는 정식 명칭은 다음과 같다. 

다음과 같이 엑셀을 작성해준다. 콤보공격에 1, 2, 3 순으로 들어가는데, 다음과 같이 경로를 복사 붙여넣기 하여준다. 

* AnimMontage : 자료형

* /Game : 프로젝트의 Content 폴더를 의미 

 

Montage 폴더안에 넣어둔 공격 애니메이션 > 레퍼런스 복사 > 붙여넣기 

 

2. 엑셀파일 저장

다음과 같이 Player_Combo_Table "CSV" 파일 형식으로 저장 

 

이 파일을 메모장에서 불러오면 다음과 같음 

 

 , 로 구분해주는게 CSV 형식이다. 

 

3. Config 폴더로 이동 

Config : 지우지 않는곳 게임이나 엔진 설정이 모여있는 파일 설정 폴더이고, 데이터 파일도 이곳에 들어간다. 

 

다음과 같이 CSV 데이터를 붙여넣기 하여주고, 다음 시간에 이어서 작업하여 

공격 콤보를 구현해 보도록 하겠다. 기대가 된다!

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

[28강] Player Combo - 2  (0) 2024.06.25
[27강] Player Combo - 1  (0) 2024.06.16
[25강] Damaged Enemy - 3  (1) 2024.06.06
[24강] Damaged Enemy - 2  (1) 2024.06.06
[23강] Damaged Enemy - 1  (1) 2024.05.15