Unity STUDY

[Unity 2D] 간단한 2D 게임 구현

yongdiary 2025. 4. 30. 13:28

기획 의도:

 간단하게 한 판씩 플레이하며, 목표도 가질 수 있는 점수 시스템을 도입해,계속해서 플레이를 할 수 있는 게임을 제작하는 게 기획의도이다.

 

사용한 에셋:

https://assetstore.unity.com/packages/2d/textures-materials/sky/free-skyboxes-space-178953 (배경만 사용)

 

https://assetstore.unity.com/packages/2d/textures-materials/dynamic-space-background-lite-104606(배경만 사용)

 

게임 제작 기능 구성:

 

사용한 컴포넌트 : Rigidbody2D,Box Collider2D,Animator

 

총 6개의 스크립트로 이루어져 각 스크립트의 주요 기능을 설명

 

  • GameStart.cs

게임 시작버튼 관련 스크립트이다.

 

SceneManagement를 이용해 GameStart 버튼을 누르면 LoadScene을 통해 메인 게임으로 넘어가게됨.

 

  • PlayerMove.cs

플레이어가 직접 조작하는 객체의 움직임을 담당하는 스크립트이다.

 

Rigidbody2D 물리엔진을 이용한 이동방법과, Animator 컴포넌트를 불러와 각 이동버튼을 클릭했을때 그에맞는 Animation을 출력하게끔하는 기능을 넣었다.

 

  • Enemy_Instance.cs

적을 생성하는 스크립트이다.

 

적으로 할 객체를 프로젝트 창을 통해 프리펩을 먼저 생성해주고 저장해준뒤, fTime을 선언한 후

fTime +=Time.deltaTime;을 이용해 if(fTime>=2)이 될때 Vector3Instantiate를 통해 위치,생성의 기능을 담았다. 여기서 생성은 랜덤으로 InvokeRepeating함수를 이용해 랜덤으로 생성되는 Enemy 객체와 위치이다.

 

  • Enemy.cs

적이 플레이어를 따라가게하게끔 하는 스크립트이다.

 

점-점 = 벡터 기하학원리를 이용해 따라오게끔 만들었고, 여기서 기존에 생성된 객체를 10초가 지났을때 없애주는 작업을 진행했다.

SceneManagement를 이용해서 타겟 객체(플레이어)와 충돌했을때 LoseScene을 출력하게끔 기능을 넣었다.

 

LoseScene에는 최종 점수를 보여주며 GAMEOVER을 보여준다.



  • Game_Score.cs

게임의 점수를 보여주는 스크립트이다.

 

static 으로 Score 변수를 선언한 뒤,  using UnityEngine.UI를 사용해 기존에 만든 Text를 사용할 수 있게끔 변수로도 선언해준다.. text에 출력하게끔 기능을 넣어준뒤 FixedUpdate()에 Score++로 점수가 계속 증가하게끔 만들어준다.




  • 시작화면

Start버튼만 보이는 시작화면이다. 버튼을 누르면 메인씬으로 넘어간다.

 

  • 메인화면

랜덤으로 생성되는 객체와 플레이어가 움직일 수 있는 주인공 캐릭터가 보인다. 좌측 상단엔 점수가 Time +=Time.deltaTime;으로 계산되는걸 직접 보여준다.

 

  • 게임오버화면

객체와 부딪혀 충돌처리가되면 다음과 같은 화면으로 넘어가 게임오버와 점수를 보여준다.

 

게임영상

유튜브: https://youtu.be/s5LBG1KDtZU