유니티 벽돌깨기 게임 개발 일지
오늘 유니티에서 고전적인 벽돌깨기 게임의 핵심 기능을 구현하는 개발을 시작했다. 주요 진행 내용은 다음과 같다.
1. 프로젝트 초기 구성 및 플레이어 구현
새 유니티 프로젝트를 Universal 2D
템플릿으로 생성하며 개발 환경을 마련했다. 이후 플레이어가 조작할 Paddle
오브젝트를 만들고, Rigidbody 2D
와 Box Collider 2D
를 추가해 물리적인 상호작용이 가능하도록 설정했다. PaddleController.cs
스크립트를 작성하여 키보드 입력에 따라 패들이 좌우로 움직이게 구현했다.
2. 입력 시스템 문제 해결
패들 움직임 구현 중, 유니티의 입력 시스템 설정 불일치로 인해 에러가 발생했다. 프로젝트 설정을 Input Manager (old)
방식으로 변경하여 이 문제를 해결했다.
3. 공(Ball) 오브젝트 구현 및 튕김 로직 완성
게임의 핵심인 Ball
오브젝트를 생성하고, Rigidbody 2D
와 Circle Collider 2D
를 추가해 물리적 속성을 부여했다. BallController.cs
스크립트를 통해 스페이스바를 누르면 공이 발사되도록 만들었다. 공이 벽을 따라 미끄러지는 현상이 발생했을 때는 Physics Material 2D
를 생성하여 Friction
을 0, Bounciness
를 1로 설정하고 공의 콜라이더에 적용함으로써 정확한 튕김을 구현했다.
4. 게임 환경 (벽과 벽돌) 구축
공이 씬 밖으로 나가지 않도록 화면의 왼쪽, 오른쪽, 위쪽에 Wall
오브젝트들을 배치하고 각각 Box Collider 2D
를 추가했다. 또한, 공이 부딪혀 파괴할 Brick
오브젝트를 만들고 이를 프리팹으로 제작하여 여러 개를 씬에 배치했다. Brick.cs
스크립트를 작성하여 공과 충돌 시 벽돌이 사라지게 했으며, 이를 위해 Ball
오브젝트에 ‘Ball’ 태그를 설정했다.
5. 게임 매니저 및 기본 게임 흐름 제어
게임의 전반적인 흐름을 관리할 GameManager
오브젝트를 생성하고 GameManager.cs
스크립트를 붙였다. 이 매니저는 게임 시작 시 공을 생성하고, 공이 화면 아래로 떨어질 경우 씬을 다시 로드하여 게임을 재시작하는 기본 게임 오버 로직을 담당한다.
6. 오브젝트 생성 및 참조 문제 해결
개발 과정에서 Ball
오브젝트가 두 개 생성되거나 아예 생성되지 않는 문제가 있었다. Hierarchy
뷰에 남아있던 원본 Ball
오브젝트를 삭제하고, GameManager
스크립트의 Ball Prefab
슬롯에 Project
뷰의 Ball
프리팹을 정확히 연결함으로써 이 문제를 해결했다.
오늘의 작업을 통해 공 튀기기 게임의 기본적인 플레이 메커니즘을 완성했다. 패들 조작, 공의 발사와 튕김, 벽돌 파괴, 그리고 게임 오버 시 재시작 기능까지 구현했다.
벽돌깨기 게임: 이후 진행할 내용 (7번)
현재 벽돌깨기 게임의 기본적인 플레이는 완성했다. 이제 게임의 완성도를 높이고 플레이 경험을 향상시키기 위한 추가 기능들을 구현할 차례다.
-
점수 시스템 구현: 벽돌을 깰 때마다 점수를 획득하고 화면에 표시한다.
-
생명 시스템 구현: 공을 놓칠 때마다 생명을 잃고, 생명이 0이 되면 게임 오버 처리한다.
-
게임 승리 조건 및 화면: 모든 벽돌을 파괴하면 게임 승리 메시지를 표시한다.
-
시작/게임 오버/승리 UI 화면: 게임 상태에 따라 적절한 UI 화면을 보여준다.
-
사운드 효과 추가: 공의 충돌, 벽돌 파괴 등 주요 이벤트에 사운드를 넣는다.
-
다양한 벽돌 및 파워업 아이템: 여러 번 쳐야 깨지는 벽돌이나 특수 아이템을 추가한다.
-
웹 배포 (WebGL): 게임 개발이 완료되면 웹 브라우저에서 플레이할 수 있도록 빌드하고 온라인에 배포한다.