Unity로 2D 플랫폼 게임 개발하기 🎮✨
안녕하세요, 게임 개발 꿈나무들! 오늘은 Unity를 사용해서 2D 플랫폼 게임을 개발하는 방법에 대해 알아볼 거예요. 이 글을 읽고 나면 여러분도 슈퍼 마리오나 소닉처럼 멋진 게임을 만들 수 있을 거예요! 😎
게임 개발은 정말 재밌는 분야죠. 여러분의 상상력을 현실로 만들 수 있는 마법 같은 일이에요. 그리고 요즘엔 재능넷같은 플랫폼을 통해 게임 개발 실력을 공유하고 거래할 수도 있어요. 멋지지 않나요? 🚀
자, 그럼 본격적으로 시작해볼까요? 준비되셨나요? 3, 2, 1... 고고!!! 🏁
1. Unity 소개 및 설치하기 🛠️
Unity는 게임 개발자들 사이에서 엄청 인기 있는 게임 엔진이에요. 왜 그럴까요? 바로 사용하기 쉽고, 강력하며, 다양한 플랫폼을 지원하기 때문이죠!
Unity의 장점:
- 초보자도 쉽게 배울 수 있는 직관적인 인터페이스
- 2D, 3D 게임 모두 개발 가능
- PC, 모바일, 콘솔 등 다양한 플랫폼 지원
- 풍부한 에셋 스토어로 개발 시간 단축
- 활발한 커뮤니티 지원
Unity를 설치하는 방법은 정말 간단해요. 그냥 Unity 홈페이지에 가서 Unity Hub를 다운로드하고 설치하면 끝! 😆
- Unity 공식 홈페이지(https://unity.com)에 접속합니다.
- 'Get Started' 버튼을 클릭합니다.
- Unity Hub를 다운로드합니다.
- 다운로드한 파일을 실행하고 설치 과정을 따라갑니다.
- Unity Hub가 설치되면 실행하고 원하는 Unity 버전을 설치합니다.
설치가 완료되면 이제 게임 개발을 시작할 준비가 된 거예요! 어때요, 생각보다 쉽죠? 😉
2. Unity 인터페이스 살펴보기 👀
Unity를 처음 실행하면 좀 복잡해 보일 수 있어요. 하지만 걱정 마세요! 천천히 하나씩 살펴보면 금방 익숙해질 거예요.
Unity 인터페이스는 크게 5개의 주요 영역으로 나눌 수 있어요:
- Hierarchy (계층 구조): 씬에 있는 모든 게임 오브젝트를 트리 구조로 보여줍니다.
- Scene View (씬 뷰): 게임 월드를 편집하고 조작할 수 있는 3D/2D 뷰입니다.
- Game View (게임 뷰): 실제 게임이 어떻게 보일지 미리 볼 수 있는 뷰입니다.
- Inspector (인스펙터): 선택한 게임 오브젝트의 속성을 보고 편집할 수 있습니다.
- Project (프로젝트): 프로젝트의 모든 에셋을 관리하는 곳입니다.
이 다섯 가지만 잘 알아두면 Unity로 게임 만들기가 훨씬 수월해질 거예요. 그럼 이제 본격적으로 2D 플랫폼 게임을 만들어볼까요? 😃
3. 2D 프로젝트 시작하기 🎬
자, 이제 우리의 멋진 2D 플랫폼 게임을 만들어볼 시간이에요! 먼저 새 프로젝트를 만들어볼까요?
- Unity Hub를 실행합니다.
- 'New Project' 버튼을 클릭합니다.
- 템플릿 목록에서 '2D'를 선택합니다.
- 프로젝트 이름을 입력하고 저장 위치를 선택합니다.
- 'Create project' 버튼을 클릭합니다.
짜잔~ 🎉 이제 우리의 2D 게임 프로젝트가 생성되었어요! 어때요, 생각보다 쉽죠?
Tip: 프로젝트 이름은 나중에 변경하기 어려우니 신중하게 정해주세요. 예를 들어 'SuperMarioClone'이나 'MyFirstPlatformer' 같은 이름이 좋겠죠?
프로젝트가 열리면 빈 씬이 보일 거예요. 이제 이 빈 캔버스에 우리의 상상력을 펼칠 차례예요! 🎨
4. 게임 캐릭터 만들기 🦸♂️
2D 플랫폼 게임의 핵심은 뭐니뭐니해도 주인공 캐릭터죠! 우리 함께 귀여운 캐릭터를 만들어볼까요?
먼저, 캐릭터 스프라이트가 필요해요. Unity의 에셋 스토어에서 무료로 다운받거나, 직접 그리거나, 재능넷에서 talented한 아티스트의 도움을 받을 수도 있어요. 어떤 방법을 선택하든 중요한 건 우리 게임의 주인공다운 멋진 캐릭터를 준비하는 거예요! 🎭
캐릭터 스프라이트를 준비했다면, 다음 단계를 따라가봐요:
- Project 창에서 우클릭 후 'Import New Asset'을 선택합니다.
- 준비한 캐릭터 이미지 파일을 선택합니다.
- 임포트된 이미지를 선택하고 Inspector 창에서 'Texture Type'을 'Sprite (2D and UI)'로 설정합니다.
- Apply 버튼을 클릭하여 변경사항을 적용합니다.
- 이제 이 스프라이트를 Hierarchy 창으로 드래그앤드롭 하면 씬에 캐릭터가 나타납니다!
우와~ 우리의 주인공이 드디어 등장했어요! 👏👏👏
참고: 캐릭터의 크기가 너무 크거나 작다면 Inspector 창에서 Scale 값을 조정해주세요. x, y, z 값을 동일하게 맞추면 비율이 유지됩니다.
이제 우리 캐릭터에게 생명을 불어넣어볼 차례예요. 캐릭터를 움직이게 하려면 스크립트가 필요해요. C# 스크립트를 만들어볼까요?
- Project 창에서 우클릭 후 Create > C# Script를 선택합니다.
- 스크립트 이름을 'PlayerController'로 지정합니다.
- 생성된 스크립트를 더블클릭하여 Visual Studio나 선호하는 코드 에디터에서 엽니다.
자, 이제 코드를 작성해볼까요? 다음 코드를 입력해주세요:
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float moveSpeed = 5f;
public float jumpForce = 10f;
public bool isGrounded = false;
private Rigidbody2D rb;
void Start()
{
rb = GetComponent<rigidbody2d>();
}
void Update()
{
// 좌우 이동
float moveHorizontal = Input.GetAxis("Horizontal");
rb.velocity = new Vector2(moveHorizontal * moveSpeed, rb.velocity.y);
// 점프
if (Input.GetButtonDown("Jump") && isGrounded)
{
rb.velocity = new Vector2(rb.velocity.x, jumpForce);
isGrounded = false;
}
}
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = true;
}
}
}
</rigidbody2d>
우와~ 😲 이 코드가 뭘 하는 건지 궁금하죠? 간단히 설명해드릴게요:
moveSpeed
와jumpForce
는 캐릭터의 이동 속도와 점프력을 결정해요.isGrounded
는 캐릭터가 땅에 닿아있는지 확인하는 변수예요.Update()
함수에서는 매 프레임마다 캐릭터의 이동과 점프를 처리해요.OnCollisionEnter2D()
함수는 캐릭터가 다른 물체와 충돌할 때 호출돼요. 여기서는 땅에 닿았는지 확인하고 있어요.
이제 이 스크립트를 우리 캐릭터에게 적용해볼까요?
- Hierarchy 창에서 캐릭터 오브젝트를 선택합니다.
- Inspector 창에서 'Add Component' 버튼을 클릭합니다.
- 'PlayerController' 스크립트를 검색하여 추가합니다.
- 캐릭터에 'Rigidbody 2D' 컴포넌트도 추가해주세요. 이건 물리 효과를 위한 거예요.
- 'Rigidbody 2D' 컴포넌트의 'Gravity Scale'을 1로 설정해주세요.
짜잔~ 🎉 이제 우리 캐릭터가 움직일 준비가 되었어요! 하지만 잠깐, 아직 뭔가 빠진 것 같지 않나요? 맞아요, 바로 땅이에요! 캐릭터가 서 있을 플랫폼이 필요하죠.
5. 게임 월드 만들기 🌍
우리 캐릭터가 뛰어놀 세상을 만들어볼까요? 먼저 간단한 땅부터 만들어봐요.
- Hierarchy 창에서 우클릭 후 '2D Object > Sprite > Square'를 선택합니다.
- 생성된 사각형의 이름을 'Ground'로 바꿔주세요.
- Inspector 창에서 Transform 컴포넌트의 Scale을 조정하여 길고 평평한 땅을 만듭니다. 예를 들어 X: 20, Y: 1, Z: 1 정도로 설정해보세요.
- Position을 조정하여 땅을 화면 아래쪽에 위치시킵니다.
이제 우리 캐릭터가 서 있을 곳이 생겼어요! 😄
주의: Ground 오브젝트에 'Box Collider 2D' 컴포넌트가 있는지 확인해주세요. 이게 없으면 캐릭터가 땅을 통과해버릴 거예요!
이제 Play 버튼을 눌러 게임을 실행해보세요. 와우! 우리 캐릭터가 움직이고 점프도 할 수 있어요! 🕹️
하지만 아직 뭔가 심심하죠? 좀 더 재미있는 레벨을 만들어볼까요?
플랫폼 추가하기
캐릭터가 점프해서 올라갈 수 있는 플랫폼을 몇 개 추가해봐요:
- Ground를 만들 때처럼 Square 스프라이트를 몇 개 더 만듭니다.
- 각 플랫폼의 크기와 위치를 조절하여 재미있는 배치를 만듭니다.
- 모든 플랫폼에 'Box Collider 2D' 컴포넌트가 있는지 확인합니다.
이제 우리 게임 월드가 좀 더 재미있어 보이네요! 🏞️
배경 추가하기
게임의 분위기를 살리려면 멋진 배경이 필요해요. 배경을 추가해볼까요?
- 멋진 배경 이미지를 준비합니다. Unity 에셋 스토어에서 무료로 다운받을 수 있어요.
- 배경 이미지를 프로젝트에 임포트합니다.
- Hierarchy 창에서 우클릭 후 '2D Object > Sprite > Square'를 선택합니다.
- 새로 만든 스프라이트의 이름을 'Background'로 바꿉니다.
- Inspector 창에서 Sprite Renderer 컴포넌트의 'Sprite' 필드에 배경 이미지를 드래그앤드롭합니다.
- Transform 컴포넌트에서 Scale을 조정하여 배경이 화면을 꽉 채우도록 합니다.
- 배경이 다른 오브젝트 뒤에 보이도록 Z 포지션을 조정합니다 (예: 10).
와~ 이제 우리 게임이 진짜 게임처럼 보이기 시작했어요! 👀✨
6. 카메라 설정하기 📷
지금은 카메라가 고정되어 있어서 캐릭터가 화면 밖으로 나가버리면 볼 수가 없어요. 카메라가 캐릭터를 따라다니도록 만들어볼까요?
- 새로운 C# 스크립트를 만들고 이름을 'CameraFollow'로 지정합니다.
- 스크립트를 열고 다음 코드를 입력합니다:
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
public Transform target;
public float smoothSpeed = 0.125f;
public Vector3 offset;
void LateUpdate()
{
Vector3 desiredPosition = target.position + offset;
Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed);
transform.position = smoothedPosition;
}
}
이 스크립트는 카메라가 부드럽게 캐릭터를 따라가도록 해줘요. 멋지죠? 😎
- Main Camera 오브젝트에 이 스크립트를 추가합니다.
- Inspector 창에서 'Target' 필드에 캐릭터 오브젝트를 드래그앤드롭합니다.
- 'Offset' 값을 조정하여 카메라 위치를 미세 조정합니다 (예: X: 0, Y: 2, Z: -10).
이제 Play 버튼을 눌러보세요. 카메라가 캐릭터를 부드럽게 따라다니는 걸 볼 수 있을 거예요! 👌
7. 적 캐릭터 추가하기 👾
게임에 도전 과제를 추가하기 위해 적 캐릭터를 만들어볼까요?
- 적 캐릭터용 스프라이트를 준비합니다.
- 스프라이트를 씬에 드래그앤드롭하여 적 오브젝트를 만듭니다.
- 적 오브젝트에 'Rigidbody 2D'와 'Box Collider 2D' 컴포넌트를 추가합니다.
- 새로운 C# 스크립트를 만들고 이름을 'EnemyController'로 지정합니다.
EnemyController 스크립트에 다음 코드를 입력해주세요: