언리얼 - 게임 개발

첫 게임 개발 (37) _ 위아래 카메라 이동 및 돈 드랍 구현

earth-star 2024. 9. 22. 18:04

제자리에서 위아래 키를 누르면 카메라를 이동하여 보다 넓은 지형을 볼 수 있도록 구현해보고 적을 처치시 랜덤한 값을 돈을 드랍하는 것도 구현해볼 것이다.

 

원래 플레이어의 이동입력에 wasd 4개가 모두 할당되어 있었지만 플랫포머2D 게임 특성상 이동은 양옆으로만 이동하기 때문에 여러차례 코드를 고치다가 그냥 분리하기로 하였다.

 

위아래 입력을 따로 만들었고 위와 같이 카메라의 이동을 구현하였다.

 

먼저 캐릭터가 제자리에 있을 때만 움직이도록 하였고 위와 아래키를 누를시 AddLocal로 카메라를 특정 속도로 이동하게 하였다.

 

또한 상한선과 하한선을 두어서 일정 구간 이상은 이동하지 않도록 하였다.

 

또한 입력이 끝나고 카메라가 원래의 자리(0,0,0)이 아닐경우 1초뒤 제자리로 돌아오도록하였다.

설정에서 UpDown키를 길게 누르기로 설정하고 시간 한계치를 1초로 두어 키를 1초간 누르면 카메라가 이동하기 시작한다.

 

다음으로 돈을 실버와 골드 2가지만 쓰기로 하였다.

 

이에 따라 기존에 만들었던 데이터 테이블을 2종류로만 간략화하였고 StaticMesh도 새롭게 구하여 적용하였다.

 

적을 처치시 돈이 나오므로 BP_Enemy_Base에 CustomEvent를 위와같이 추가하였다.

 

Loop를 이용하여 생성할 여러개를 생성하고 각 돈 AddImpulse를 추가하여 랜덤값으로 튀어오르도록 하였다.

 

Add Relative Rotation은 언리얼의 3D 특성상 2D 처럼 보이도록 돈이 나올때 동전의 얇은 면이 아닌 옆면이 보이게끔 90도 회전시켰다.

 

위에서 이벤트 입력에 Number을 넣어 각 적마다 돈의 개수를 정할 수 있도록 하였고 이또한 랜덤으로 적용시켰다.

 

위는 1 값어치의 실버가 3~6, 10 값어치의 골드가 1~2값으로 랜덤하게 나오도록 하였다.

 

구현하고 보니 돈이 동시에 튀어나와 서로 콜리전이 충돌하여 튕겨져 나갔다.

 

이를 해결하기 위해 세팅에서 Money 콜리전을 하나 새롭게 만들어서 Money끼리는 충돌하기 않도록 하였다.

 

인벤토리를 열지 않고 인게임 화면에서도 돈이 보이도록 Money Widget을 간단히 추가하였다.

 

BPC Inventory에서 Widget을 추가하여준다.

 

테스트용으로 몇가지 소리 에셋을 구해 대시, 기본공격, 원거리공격, 돈 줍기에 사운드를 추가하였다.

 

 

카메라 위아래 이동과 돈 드랍 및 사운드가 잘 구현된 것을 볼 수 있다.