0. 발단


며칠 전 저는 게임패스에서

A game about digging a hole이라는 게임을 발견한 후

흥미를 갖게되어 플레이합니다


특출난 구석은 없지만 왠지 모르게 사람을 빠져들게 하는 게임성에 의해

앉은 자리에서 엔딩까지 보게 되었고

본인도 언젠가 땅파는 게임을 만들어보고 싶다는 생각을 하게되었습니다


그로부터 얼마 뒤 오늘

작업중이던 토이프로젝트를 여는 순간

형용할 수 없는 수치심과 한심함에

내겜구려병이 398457134905871349857번째 재발하게되어

프로젝트를 단숨에 삭제하고

마음 한 켠에 자리잡은 땅파는 게임을 만들며 일지를 써볼까 합니다

---------------------------------------------------------------------------------------------


1. 기획

그 동안 프로젝트를 폐기했던 이유는 항상 제 분수에 맞지 않는 기획이었습니다

좋게쳐줘도 입문자를 막 넘어선 초보수준의 프로그래밍 실력을 갖고있기때문에

이번 프로젝트는 정말 간단한 목표를 잡겠습니다



-목표

특정좌표까지 땅파기 ex) y = -1000


-시스템

1인칭 시점

블록에 데미지를 누적시키는 방식 (마크처럼 채광도중에 에임이 벗어나도 초기화되지않음)

곡괭이 파워, 곡괭이 속도 업글 가능

땅파서 광물 얻기

광물팔아서 업글하기

깊이갈수록 단단하고 비싼광물 등장

------------------------------------------------------------------------------------------------

2. 기본 시스템 구현


먼저 카메라 시점과, 플레이어의 이동을 구현해보겠습니다


시네머신을 사용하면 편할 것 같습니다


24b0d121e09c28a8699fe8b115ef0468e7adefbe


Tracking target을 추적할 오브젝트로 설정

Position Control을 Hard Lock To Target으로 설정

Rotation Control을 Pan Tilt로 설정



24b0d121e09c28a8699fe8b115ef046ecf48c3f0

맨 위, 맨 아래를 볼 수 있게 하고싶어 Tilt Axis의 range값을 -90~90으로 바꾸겠습니다

또한 add input controller를 누르면 알아서 input을 설정해줍니다


잘 작동합니다

--------------------------------------------------------------------------------------------------------------------

플레이어의 이동은 시네머신 카메라의 pantilt의 회전값을 이용해서 플레이어 오브젝트를 회전시키고

리지드바디의 linearvelocity를 통해 움직임을 제어하도록 했습니다

이때 인풋은 유니티에서 기본제공하는 new input system의 Player/Move 액션을 이용해

Vector2값을 Vector3로 전환해 사용했습니다



잘 작동합니다


지터링 문제가 있었지만

이동관련 로직을 fixed업데이트에서 처리하고

플레이어 리지드바디의 interpolate를 설정해주니 해결되었습니다


다음 시간에는 채광가능블록에 대한 기능을 구현해보겠습니다