유니티 첫 프로젝트로 연습 겸 해서 플랫포머 베이스의 게임을 만들고 있다
빈 땅에서 뭐가 움직일 순 없으니까, 맨 처음은 타일맵을 불러오고 물리 부여. 두 가지 문제가 있었다.
1. 타일맵이 스프라이트 옆 칸을 먹어서? 스프라이트 시트 옆 칸 타일의 인접한 도트가 아주 얇게 튀어나온다. -> 타일 크기? 를 0.999로 설정해서 해결
2. 타일맵 콜라이더의 콜라이더가 미묘하게 울퉁불퉁하다. 왜 물리 테스트용으로 만든 간단한 플레이어가 지 혼자 넘어지니...
-> 넘어지는 건 일단 rigidbody Z회전 잠가서 막고, 울퉁불퉁한 건 컴포짓 콜라이더를 추가로 사용해서 해결. 이게 콜라이더를 뭉쳐주는 것 같다.
테스트에 필요한 기본적인 맵을 만들고, 스테이지 전환은 나중에 구현할 것.
좌우 이동은 현재 이동하는 방향으로 일정 속도에 도달할 때까지 가속하고, 일정 속도에 도달하면 속도를 유지하는 방식
땅의 마찰력이 있으면 벽에 붙어버릴 수 있길래, 벽 점프가 있을 게임은 아니라 마찰력을 지워버리고 땅에 닿아있고 입력이 없으면 현재 속도에 비례한 감속을 하도록 만들었다.
점프를 고려해서 체공 시 가속력을 줄이는 것까지 제작. 착지 여부 판정은 일단 Overlapcircle사용이 제일 간단해 보여서 이걸 사용. 플레이어 아래 위치에서 작은 원을 그려서 Ground태그인지 판단한다. 성능 생각하면 대체해야 할 듯
마지막은 점프
점프는 스페이스를 누르면 일단 플레이어에게 위쪽 힘을 주게 만들었는데, 스페이스를 오래 누르면 높이 올라가게 하고 싶어서 점프 시전하고 점프 키 누르고 있는 동안은 Jumping 상태가 되고, 이 동안은 특정 속도가 될 때까지 가속하도록 만듬. 근데 자꾸 점프 높이가 일정하지 않은 문제 발생. 이거 고치다가 종료.
종료하기 전에 플랫폼 이펙터도 한 번 써 봤음. 이건 one-way platform(아래에서 위 방향은 통과, 위에서 아래 방향은 충돌하는 지형)을 만들 때 사용하는 건데, 통과되지 않는 지형과 안 되는 지형을 구분하려면 타일맵을 두 겹 겹쳐야 해서 일단 빼 둠. 맵 생성 부분 짤 때 만들 것.
다른 코드 찾아보니까 점프 키를 뗄 때 상승 속도를 낮춰주는 방식을 쓰길래, 이쪽을 테스트해 볼 예정.
이동이 게임의 근간이라, 할 게 많다고 생각함. 다음 작업은 플레이어 움직임에 관여하는 기술을 만들려면 어떤 구조로 만들지 생각하면서 플레이어 움직임 쪽 코드 다시 짜야겠음.
플레이어 움직임이 끝나면 탄환 발사와 적의 기본형을 만들 예정.
댓글 2