본문 바로가기

Unreal/Udemy 강의

Unreal Engine 4 C++ The Ultimate Shooter Course Section 7-12

Update AmmoMap

이제 AmmoMap을 업데이트 해주는 과정을 만들어주자.

먼저 탄창 용량에 대한 변수를 Weapon 클래스에  선언 및 초기화 해주자.

 

이에 대한 Getter 함수도 생성해주자.

 

다음으로 FinishReloading() 함수이다.

여기서 AmmoMap에 대한 업데이트를 진행하게 된다.

 

먼저 장착된 무기가 유효한지 체크하고, 해당 무기의 탄약 유형을 확인한다.

해당 유형이 AmmoMap에 있는 지를 체크하고, 해당 유형에 대한 총알을 가져오게 된다.

 

이어서 탄창 용량에서 현재 탄약을 빼서 남은 용량을 체크해준다.

이제 남은 용량을 기준으로 AmmoMap을 업데이트 하게 된다.

 

필요한 부분을 추가적으로 만들어주자.

먼저 RealodAmmo() 함수이다.

 

checkf 함수를 이용하여 디버깅을 포함한 체크를 해줄 것이다.

현재 탄약과 장전할 탄약이 최대 탄창 용량을 넘어서지 않는지 체크를 해주자.

 

이제 해당 함수를 이용해 나머지 부분을 구현해주자.

먼저 남은 탄창 용량이 가져올 탄약보다 많을 때이다.

이때는 가져올 탄약을 모두 장전을 해주고, 탄약을 모두 가져왔으니 CarriedAmmo는 0으로 바꿔준다.

그리고 AmmoMap에 해당 탄약 유형과 탄약을 넣어 갱신해준다.

 

다음으로 탄창 용량이 가져올 탄약보다 적을 때이다.

이때는 사전에 계산했던 남은 용량 만큼 탄약을 넣어 장전해주면 된다.

그리고 CarriedAmmo에 해당 양만큼 감소시키고, 해당 값으로 AmmoMap을 갱신해주자.

 

이제 컴파일을하고 Montage로 돌아가자.

여기서 Notify를 추가해줄 것이다.

 

장전 마침을 알릴 것이므로 해당 Notify를 Montage의 끝에 놔주자.

 

Animation 블루프린트의 Event Graph로 가서 해당 Notify를 호출하자.

 

Shooter Character를가져오고 유효 하다면 알림을 통해서 Finish Reloading 함수를 호출해주자.

Finish Reloading 함수를 blueprintcallabe로 선언했던 이유이다.

 

이제 탄약 개수를 다시 초기화 해줄 것이다.

탄창 용량을 30으로 했으므로 탄약 개수 또한 30으로 조정해주자.