Coding Feature.

[Unity 3D] 3D 퐁 만들기 #11 버그 수정, Itch.io 게임 출시까지 본문

Toy Project/MICRO-PONG [Unity3D]

[Unity 3D] 3D 퐁 만들기 #11 버그 수정, Itch.io 게임 출시까지

codingfeature 2024. 1. 24. 18:07

우선 이전에 공이 맵 밖으로 나가는 버그에 대해서 처리했던 코드가 미흡해서 제대로 처리하기 위해 수정했습니다.

https://codingfeature.tistory.com/96

 

[Unity 3D] 3D 퐁 만들기 #8 공이 벽 또는 플레이어를 뚫고 지나가는 버그 해결, 카메라 이동 효과 구

지금까지 게임을 개발하면서 생긴 버그가 있었습니다. 바로 아래 그림과 같이 속도가 높아지면서 공이 플레이어 또는 벽을 뚫고 지나가는 경우가 발생하는 것입니다! 위 버그가 발생하는 원인

codingfeature.tistory.com

 

        if (transform.position.x < GameManager.Instance.wallLeft.transform.position.x
            || transform.position.x > GameManager.Instance.wallRight.transform.position.x
            || transform.position.y < GameManager.Instance.wallBottom.transform.position.y
            || transform.position.y > GameManager.Instance.wallTop.transform.position.y)
        {
            transform.Translate(-1 * ballMovementVector.normalized * ballSpeed * Time.deltaTime);
            RotateBallVector(180f);
        }

 

이전까지는 위 코드와 같이 상하좌우 벽에 대해서만 공이 뚫고 지나가는 버그만 처리를 했었습니다. 또한 어느 벽이든 똑같이 180도로 공을 회전시킴으로써 해결을 했었습니다.

 

다만 위 코드는 뒷쪽의 벽에 대해서 버그 처리를 하지 못하고, 벽을 뚫고 지나가도 벽이 상하좌우 그리고 뒷면과 관계없이 180도 회전시키는 건 공의 궤적을 이상하게 만드는 처리였습니다.

 

따라서 아래 코드와 같이 상하 벽에 대해서는 공의 이동 벡터 y축 성분을 반전시키고, 좌우 벽은 x축, 뒷면의 벽은 z 축의 성분을 반전시킴으로써 좀 더 일관적이고 자연스러운 처리를 구현하였습니다!

 

        if (transform.position.x < GameManager.Instance.wallLeft.transform.position.x
            || transform.position.x > GameManager.Instance.wallRight.transform.position.x)
        {
            transform.Translate(-1 * ballMovementVector.normalized * ballSpeed * Time.deltaTime);
            ballMovementVector.x *= -1;
        }

        if (transform.position.y < GameManager.Instance.wallBottom.transform.position.y
            || transform.position.y > GameManager.Instance.wallTop.transform.position.y)
        {
            transform.Translate(-1 * ballMovementVector.normalized * ballSpeed * Time.deltaTime);
            ballMovementVector.y *= -1;
        }

        if(transform.position.z > GameManager.Instance.wallBack.transform.position.z)
        {
            transform.Translate(-1 * ballMovementVector.normalized * ballSpeed * Time.deltaTime);
            ballMovementVector.z *= -1;
        }

 

 

 

그리고 UI와 관련해서는 제가 조금 약해서 일단은 블랙 앤 화이트 톤으로 최대한 깔끔하게 만들기 위해 노력했습니다..!

그리고 리더보드 데이터를 가져오기전 로딩 텍스트를 띄어서 UI를 좀 더 깔끔하게 만들었습니다.

 

그 다음 플레이어가 더욱 큰 재미를 느낄 수 있도록 게임 밸런스를 조금 수정했습니다.

 

처음 공의 속도는 20이었지만 초반에 속도를 빠르게 하는 대신 맵의 크기를 키우고 점수를 얻으면서 가속이 붙는 Ratio를 조금 낮춰서 계속해서 재미있게 플레이할 수 있도록 했습니다.

 

 

 

그 다음 게임의 여러 이미지, GIF 등을 만들어서 Itch.io 사이트에 게임을 등록했습니다!

 

 

아래 링크에서 플레이 해보실 수 있습니다!

 

MICRO-PONG by CodingFeature (itch.io)

 

MICRO-PONG by CodingFeature

NEON-RETRO HYPER 3D PONG WITH ONLINE LEADERBOARD

codingfeature.itch.io

 

 

 

프로젝트 인원

1인 개발

 

프로젝트 기간

1월 18일 - 1월 24일 (7일), 약 35시간

 

프로젝트 결과물

- 작성한 코드 총 1520 줄.

Github Link - https://github.com/MovieGoers/MICRO-PINGPONG

 

GitHub - MovieGoers/MICRO-PINGPONG

Contribute to MovieGoers/MICRO-PINGPONG development by creating an account on GitHub.

github.com

 

- 웹 상에서 플레이 또는 다운로드가 가능한 게임 소프트웨어.

 

프로젝트 성과

- 첫 Unity3D 게임 온라인 출시 (Itch.io)

- 유니티 게이밍 서비스(Unity Gaming Service)의 리더보드 기능을 활용한 실시간 온라인 리더보드 구현

- 포스트 프로세싱과 유니티 이펙트 시스템를 활용한 네온-레트로 테마 구현.

- 옵션 메뉴, 해상도 변경 기능 등 구현.

 

추후 계획

구글 플레이 스토어 출시 (광고 포함).

 

 

다음 프로젝트는 하이퍼 FPS를 생각하고 있습니다!