비회원 님 안녕하세요.

MENU

프로젝트 개요

  • 개발 형태: Windows 게임
  • 개발 인원: 1인
  • 기술 스택: Unity, C#, Visual Studio
  • 설치 및 실행 방법: 굿즈를 지켜라!.zip 다운로드 후 압축 해제, GoodsGuardian.exe 실행

 

게임 설명

  • 고양이 미정이까칠이가 랜덤한 위치에서 굿즈를 떨어뜨립니다.
  • 플레이어 캐릭터 프릴을 ←, → 키로 조작하여 굿즈를 받아냅니다.
  • 시간이 지날수록 굿즈의 생성 간격과 낙하 속도가 빨라집니다.

 

멘탈(라이프)

  • 초기 멘탈: 5칸
  • 굿즈를 놓쳤을 때 멘탈 감소량
  • 일반 굿즈 → 1칸 감소  
    • 스카디 굿즈 → 2칸 감소  
    • 한정판 스카디 굿즈 → 3칸 감소  
  • 멘탈이 모두 소진되면 게임 오버, 결과 화면에서 최종 생존 시간이 표시됩니다.  
  • 이 게임에 해피 엔딩은 없습니다.

 

주요 기능

  • 플레이어 조작: 좌우 이동, 방향 반전  
  • 고양이: 선반 위에서 좌우 이동 및 방향 전환
  • 굿즈 드롭 시스템: 시간이 지날수록 난이도 증가
  • 굿즈 종류: 일반 / 스카디 / 한정판 스카디
  • 멘탈: 굿즈가 바닥과 충돌할 시 멘탈 감소, 0이 되면 게임 오버  
  • 게임 루프: 메인 → 플레이 → 결과 씬 전환  
  • 사운드: 씬별 BGM 자동 전환(인트로, 플레이, 결과)
  • UI: 생존 시간 타이머, 결과 화면에 최종 기록 표시

 

기술적 구현(Architecture & Code Design)
1. 프로젝트 구조

  • PlayerController.cs
    • Rigidbody2D 기반 좌우 이동(`FixedUpdate` → `MovePosition`)  
    • 입력(`Input.GetAxisRaw("Horizontal")`)으로 키 반응 처리  
    • 이동 방향에 따라 Sprite 반전 처리
  • CatController.cs
    • 고양이 AI: 일정 주기마다 무작위 방향 전환  
    • 벽 충돌 시 방향 반전  
    • `UpdateSprite()`로 이동 방향에 맞춰 Sprite Flip  
  • DropManager.cs
    • 굿즈 생성/난이도 관리  
    • `Instantiate`로 굿즈 생성, 20초/40초 경과 시 새로운 굿즈 종류 추가  
    • 일정 주기마다 `gravityScale` 증가 및 생성 간격 감소 → 난이도 상승  
  • GoodsController.cs/GoodsType.cs
    • Enum 기반 굿즈 타입 정의 (Normal / Scadi / Limited)  
    • 굿즈가 바닥과 충돌하면 피해량 전달 후 삭제  
    • 플레이어와 충돌 시 즉시 소멸  
  • GameManager.cs
    • 전역 싱글톤  
    • 게임 타이머 UI 관리 (0.1초 단위 업데이트)  
    • 멘탈 시스템 관리 (Image 배열)  
    • 멘탈 소진 시 게임 오버 및 씬 전환  
  • UIManager.cs
    • 결과 화면에서 최종 생존 시간 표시  
    • SceneController.cs
    • `SceneManager` API를 통한 메인/플레이/결과 씬 전환
    • SoundManager.cs
  • 싱글톤 + `DontDestroyOnLoad`  
  • 씬 이름 기반 BGM 전환 (`sceneLoaded` 이벤트)  

 

2. 주요 설계 포인트

  • 싱글톤 패턴: GameManager, SoundManager는 전역 접근을 위해 싱글톤 적용  
  • 씬 기반 게임 루프: Main → Play → Result 구조로 명확한 흐름 설계  
  • 난이도 조절 알고리즘: 일정 시간마다 중력/생성 간격 조정 → 점진적 난이도 상승  
  • Enum 활용: GoodsType으로 굿즈 종류 및 피해량 정의 → 유지보수 용이  
  • UI 최적화: 타이머는 0.1초 단위 갱신 → 성능과 가독성 균형  
이전 글 목록으로 다음 글