본문 바로가기

❤ 30기/30기 세미나

[30기 6차 세미나] 유니티 2D를 이용한 게임 제작

 

 

2학기 종강 후 어느덧 30기의 마지막 세미나 시간이 찾아왔습니다.

 

 

 

이번 6차 세미나에서는 Unity 2D를 활용해 간단한 미니 게임을 직접 제작해보는 시간을 가졌는데요,

 

 

 

그럼 이번 세미나에서는 어떤 내용들이 진행되었는지, 같이 보러 가실까요? 🙌

 

 

 

주제


 

 

 

기간

 

 

12월 22일 (월) ~ 12월 28일 (일)

 

 

 


 

 

 

세미나 소개

 

 

허유장박팀에서 진행해 주신 이번 세미나에서는

 

 

유니티 엔진 설치 및 플레이어 오브젝트 생성부터 좌우 이동∙장애물 낙하∙충돌 감지 등 다양한 게임 로직을 구현해 보았습니다.

 

 

 

 

내용


1. 프로젝트 시작하기

 

 

 

Unity Hub를 OS 버전에 맞게 설치했다면, 이제 미니 게임 제작을 위한 기본 세팅부터 차근차근 진행해봅니다. 

 

 

먼저 새 프로젝트를 생성하고, Game 해상도를 720*1280으로 설정해 실습 환경에 맞춰줍니다. 

 

 

이후 사용할 이미지 소스들을 정리한 뒤,

Canvas를 생성하고 Render Mode를 Screen Space-Camera로 변경해 Main Camera를 할당합니다. 

 

 

마지막으로 배경 이미지를 Canvas에 배치하고 크기를 조정하면, 본격적인 게임 실습을 시작할 준비가 완료됩니다!

 

 

 


 

 

2. 플레이어 만들기

 

 

 

이번 단계에서는 플레이어 오브젝트를 만들고, 게임 전반을 관리할 GameManager 스크립트를 작성합니다.

 

 

먼저 Hierarchy에서 플레이어 오브젝트를 생성한 뒤, Inspector에서 Sprite Renderer를 추가합니다.

 

 

준비된 플레이어 이미지를 적용하고, 화면에 맞게 위치와 크기를 조정해 줍니다.

만약 오브젝트가 보이지 않는다면, Order in Layer 값을 조절해 표시 순서를 해결할 수 있습니다.

 

 

이어서 Assets에서 GameManager 스크립트를 생성하고, 빈 오브젝트를 만들어 스크립트를 붙여줍니다.

 

 

스크립트에서는 public 변수를 선언해 Inspector에서 오브젝트를 연결할 수 있도록 설정하고,

게임 진행 상태와 게임 오버를 관리할 변수도 함께 준비합니다.

 

 

 


 

 

3. 플레이어 이동

 

 

 

이번 단계에서는 방향키 입력에 따라 플레이어가 좌우로 이동하도록 스크립트를 작성합니다.

 

 

Input.GetAxisRaw("Horizontal")로 왼쪽(-1) / 오른쪽(1) / 입력 없음(0) 값을 받아오고,

transform.Translate()로 이동을 적용합니다.

 

 

또한, 플레이어가 화면 밖으로 나가지 않도록 카메라 기준 경계값을 계산하고,

Mathf.Clamp()로 x좌표를 이동 가능한 범위로 제한합니다.

 

 

 


 

 

4. 장애물 생성 

 

 

 

이번에는 Hierarchy에서 장애물 오브젝트를 만든 뒤 프리팹으로 저장해 반복해서 사용할 수 있도록 합니다.

 

 

이후 Sprite Renderer를 추가하고 준비된 이미지를 연결한 뒤,

Layer, Scale, 위치와 크기 등을 조정해 화면에 자연스럽게 배치합니다.

 

 

기존에 작성한 GameManager 스크립트를 다시 열어,

장애물 프리팹 변수를 추가하고, 장애물 생성 간격(스폰 주기)와 낙하 속도 등 필요한 설정값을 선언해 줍니다.

 

 

 


 

 

5. 장애물 떨어지기 

 

 

 

이어서 코루틴(Coroutine)을 활용해 게임 진행 중 일정 간격으로 장애물이 생성되도록 구현해 봅니다.

 

 

Start()에서 스폰 코루틴을 실행하고, yield return으로 스폰 주기(Spawn Interval)만큼 대기하며 반복합니다.

 

 

이 때, 장애물이 떨어질 x 위치를 화면 범위 내에서 랜덤으로 정한 뒤, Instantiate()로 프리팹을 생성합니다.

생성된 장애물은 아래 방향으로 계속 이동시켜 낙하 효과를 줍니다.

 

 

장애물이 화면 아래로 충분히 내려가면 Destroy()로 제거하고, yield break로 코루틴을 종료해 불필요한 반복을 방지합니다.

 

 

마지막으로 Unity에서 GameManager에 장애물 프리팹을 연결해 실행하면,

장애물이 위에서 랜덤하게 생성되어 아래로 떨어지는 모습을 확인할 수 있습니다!

 

 

 


 

 

6. 게임 오버 

 

 

 

마지막으로, 게임 오버 기능 구현을 진행해 봅니다.

 

 

UI Text를 생성해 "Game Over"를 표시한 뒤, 화면에 맞게 위치∙크기∙색상을 조정하고,

GameManager 스크립트에서는 게임오버 UI 참조와 종료 여부(bool)를 추가합니다.

 

 

장애물 로직에서는 플레이어와의 거리를 계산해 1.5 이하이면 충돌로 판단하고,

충돌 시 장애물을 제거한 뒤 GameOver()를 호출해 게임오버 상태 전환과 Game Over UI 활성화를 진행합니다.

 

 

 

 

과제


- 게임 파일 제작하기

 

 

이번 과제는 세미나에서 다룬 2D 게임을 직접 구현해 보는 것이었습니다.

부원 분들은 플레이어∙장애물 오브젝트를 구성하고, 이동 로직부터 스폰/낙하 코루틴, 충돌 판정, 게임 오버까지

기능을 하나씩 완성하며 게임의 흐름을 만들었습니다.

 

 

이번 과제를 통해 Unity를 프로젝트 세팅부터 핵심 기능 구현까지 경험해 보고,

게임이 동작하는 기본 구조와 원리를 이해할 수 있었습니다.

 

 

 


 

 

 

이번 유니티 세미나를 끝까지 함께해 주신 부원 여러분, 모두 수고 많으셨습니다!

 

 

얼마 남지 않은 2학기 프로젝트도 지금처럼 차근차근 완주하시길 진심으로 응원합니다! ✨