오늘 진행한 작업은 아래와 같다.
총 3가지 기능을 구현했다.
이전에는 Player의 피격 시스템을 구현하지 않았기에 게임의 종료 조건이 없었지만, 이번에는 Player가 Enemy와 충돌하고 있을 경우 초당 약 10의 Damage를 입는 기능을 추가했다.

OnCollisionStay2D 함수에서 Player에게 Damage를 줄 때 인자로 그냥 10을 설정하면 Stay 함수가 빠른 속도로 호출되기 때문에 Player가 금방 죽어버린다.
그래서 초당 약 10의 Damage를 위해 Time.deltaTime을 곱한 값을 인자로 설정했다.
만약, Player의 Hp가 0이 될 경우 Player의 사망 Animation이 재생되고 Dead라는 문구가 보이는 GameOver Panel이 활성화된다.

반대로, Player가 제한 시간동안 생존에 성공하면 게임 승리이며 Survived라는 문구가 보이는 Panel이 활성화된다.
이 때, Field에 있는 모든 Enemy를 처치하는 기능도 추가하였다.

결과 화면에서 다시 시작을 누르면 게임 재시작이 가능하도록 함수를 연결해놨다.

테스트를 위해 기본적인 값들이 조정된 상태이다.
Player가 게임을 시작할 때 직업을 선택해서 플레이할 수 있는 직업 기능을 추가했다.
현재는 4종류의 직업을 구현하였으며 각 직업마다 고유 능력이 존재하여 플레이에 영향을 미친다.

각 직업 설명에 있는 효과가 게임 플레이 시 적용되며, 직업의 고유 특성을 코드상으로 적용하기 위해 Class를 하나 만들어서 관리하였다.

Character라는 Class인데 일부를 살펴보자면 여러 속성이 존재하며, 각 직업마다 PlayerId가 존재하여 해당 직업으로 플레이할 경우 능력치에 보정이 생기는 방식이다.
예를 들어, 보리농부로 플레이를 할 경우 공격속도에 10% 보정이 생기는데 이는 근접 무기의 회전체 속도가 10% 증가하고, 원거리 무기의 발사 간격이 10% 감소한다.


무기의 초기값 세팅과 Item으로 인한 Speed 값 조정 시 캐릭터의 고유 능력이 반영된다.
이처럼 Player의 능력치에 관한 코드에 고유 능력 값을 반영하여 직업 선택 기능을 구현했다.
또한, 쌀농부와 감자농부는 기본적으로 근접 무기 1 Level, 보리농부와 콩농부는 원거리 무기 1 Level을 가지고 시작하도록 했다.
콩농부 플레이 영상 | 보리농부 플레이 영상 |
|---|
위 영상은 콩농부와 보리농부로 플레이하는 비교 영상이다.
기본적으로 근접 무기 Level 1은 회전체가 2개, 원거리 무기 Level 1은 관통이 0이다.
하지만 보리농부와 달리 콩농부의 고유 능력으로 인해 근접 무기 Level 1일 때의 회전체가 3개, 원거리 무기의 Level 1때 관통이 존재하는 것을 볼 수 있다.
위에서 봤듯이 기본적으로 감자농부와 콩농부의 능력치가 쌀농부와 보리농부에 비해 좋은 편이다.
그래서 쌀농부와 보리농부만 기본으로 제공되는 직업으로 설정하고, 감자농부와 콩농부는 일정 조건을 충족해야만 해금되는 직업으로 설정했다.


처음에는 기본 UI에서 Lock 되어있는 UI를 보여주고 있는데, 조건이 충족될 경우 미해금 UI가 없어지며 기존의 캐릭터 선택 UI가 나오도록 했다.
이를 위해 Player의 업적을 관리하는 Achieve Manager를 생성했고, 현재 게임 진행 상태를 확인하여 조건이 충족되면 PlayerPrefs를 사용하여 해금 정보를 저장했다.

위 사진과 같이 저장된 값을 바탕으로 게임이 시작될 때 특정 업적의 값이 1이라면 해금됐다는 뜻이므로 UI에서 Unlock된 캐릭터 선택 창을 보여준다.

또한, 게임을 진행하다가 특정 조건을 충족했을 경우 해금 알림을 화면 오른쪽 상단에 띄우는 기능도 추가했다.

테스트를 위해 Kill 수가 5 이상이면 감자농부가 해금되도록 설정해놓은 상태이다.
위 해금 알림이 뜬 후 다시 캐릭 선택 창을 가보면 감자농부가 해금되어있는 것을 볼 수 있다.


처음에는 보리농부로 시작해서 5 Kill을 충족하여 감자농부가 해금되었고, 감자농부로 시간 제한동안 생존하여 콩농부가 해금되는 것을 볼 수 있다.