유니티 벽돌깨기 게임 개발 일지
진행 내용 요약:
오늘은 게임의 핵심 기능 개선 및 버그 수정에 집중했습니다.
-
패들 이동 및 공 중력 구현:
-
패들이 화면 경계를 벗어나지 않도록
PaddleController.cs
스크립트를 수정하여Mathf.Clamp
를 이용한 X축 이동 제한을 구현했습니다. -
공에 미세한 중력을 추가하기 위해
Ball
프리팹의Rigidbody 2D
컴포넌트에서Gravity Scale
값을 조절했습니다.
-
-
다단계 스테이지 관리:
-
총 5개의 스테이지(
GameScene_Level1
~GameScene_Level5
)가 원활하게 작동하도록Build Settings
에 모든 씬을 추가하고 순서를 확인했습니다. -
각 게임 씬의
GameManager
오브젝트에 해당 씬의Paddle
오브젝트,ScoreText
,LivesText
UI가 올바르게 연결되었는지 점검 및 수정했습니다.
-
-
현재 레벨 표시 기능 추가:
-
플레이어가 현재 스테이지를 알 수 있도록 각
GameScene_LevelX
씬에LevelText
UI 오브젝트를 추가했습니다. -
GameManager.cs
에levelText
변수를 추가하고UpdateUI()
함수를 수정하여 현재currentLevel
값을 UI에 표시하도록 구현했습니다.
-
-
게임 종료 후 재시작 로직 개선:
-
게임 클리어(
WinScene
) 및 게임 오버(LoseScene
) 후의 버튼이 눌렸을 때, 무조건 1단계(GameScene_Level1
)부터 게임이 다시 시작되도록 로직을 통일했습니다. -
이를 위해
WinScene
과LoseScene
에 있는 재시작 버튼들이GameManager
의RestartGame()
함수를 호출하도록 연결을 변경했습니다.
-
-
버튼 클릭 문제 디버깅 및 해결:
-
버튼이 클릭되지 않는 문제를 해결하기 위해 여러 디버깅 작업을 수행했습니다.
-
주요 원인이었던
GameManager
내 버튼 관련 함수들(StartGame()
,RestartGame()
,GoToStartScene()
,GameOver()
,LoadNextLevel()
,GameWin()
)의 접근 지정자를void
에서public
으로 변경하여 유니티 에디터에서 버튼On Click()
이벤트에 함수를 연결할 수 있도록 했습니다. -
각 씬의
GameManager
오브젝트에 해당 씬의 버튼 UI 오브젝트가Inspector
에서 올바르게 연결되었는지 재확인하고 수정했습니다. -
모든 씬에
EventSystem
오브젝트가 존재하고Raycast Target
옵션이 활성화되어 있는지 확인하여 UI 이벤트 감지 문제를 해결했습니다.
-
모든 디버깅이 완료되었으며, 이제 게임이 의도한 대로 작동할 것으로 예상됩니다.