C#과 Unity는 2D 게임 개발에서 강력한 조합입니다.
이번 포스트에서는 Unity와 C#을 활용하여 간단한 2D 게임을 만들어 보겠습니다.
기본적인 캐릭터 이동부터 충돌 처리까지 진행하며, 실습을 통해 Unity의 핵심 개념을 익힐 수 있도록 하겠습니다.
1. 게임 소개
이 게임은 플레이어가 장애물을 피해 아이템을 수집하고, 적을 피하거나 처치하면서 목표 점수를 달성하는 간단한 2D 플랫폼 게임입니다.
플레이어는 키보드를 이용해 캐릭터를 조작하며, 점프를 활용해 장애물을 넘고, 적을 피해야 합니다.
일정 점수를 획득하면 게임이 완료됩니다.
게임 목표
- 아이템을 수집하여 점수를 획득
- 적을 피하거나 처치하며 생존
- 목표 점수를 달성하면 게임 클리어
주요 기능
- 플레이어 이동 및 점프: 화살표 키 또는 WASD 키를 이용해 이동, Space 키로 점프 가능
- 카메라 이동: 플레이어를 따라다니는 카메라
- 아이템 수집: 특정 아이템을 획득하면 점수 증가
- 적 AI: 플레이어를 쫓아오는 적 구현
- 게임 관리: 점수 관리 및 게임 종료, 재시작 기능 포함
2. Unity 프로젝트 설정하기
먼저 Unity Hub에서 새로운 2D 프로젝트를 생성합니다.
2.1 프로젝트 생성
- Unity Hub 실행
- New Project 클릭
- 2D Core 템플릿 선택
- 프로젝트 이름 입력 (예: My2DGame)
- 생성 버튼 클릭
2.2 기본적인 폴더 구조 설정
프로젝트를 구성하기 위해 다음과 같은 폴더를 생성합니다.
- Assets/Sprites/ : 캐릭터 및 배경 이미지
- Assets/Scripts/ : C# 스크립트 파일
- Assets/Scenes/ : 게임 씬 관리
3. 캐릭터 추가 및 이동 구현
3.1 캐릭터 스프라이트 추가
- Assets/Sprites/ 폴더에 캐릭터 이미지를 추가합니다.
- Hierarchy 창에서 GameObject > 2D Object > Sprite 선택
- 추가한 스프라이트를 선택 후 Inspector에서 조정
3.2 캐릭터 이동 및 점프 스크립트 작성
캐릭터 이동을 위한 C# 스크립트를 생성합니다.
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float moveSpeed = 5f;
public float jumpForce = 7f;
private Rigidbody2D rb;
private bool isGrounded;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
float moveX = Input.GetAxis("Horizontal");
rb.velocity = new Vector2(moveX * moveSpeed, rb.velocity.y);
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
{
rb.velocity = new Vector2(rb.velocity.x, jumpForce);
}
}
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = true;
}
}
void OnCollisionExit2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = false;
}
}
}
4. 아이템 수집 구현
using UnityEngine;
public class ItemCollector : MonoBehaviour
{
private int score = 0;
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Item"))
{
Destroy(other.gameObject);
score++;
Debug.Log("Score: " + score);
}
}
}
5. 적 AI 구현 (기본적인 추격 로직)
using UnityEngine;
public class EnemyAI : MonoBehaviour
{
public Transform player;
public float speed = 3f;
void Update()
{
if (player != null)
{
transform.position = Vector2.MoveTowards(transform.position, player.position, speed * Time.deltaTime);
}
}
}
6. 게임 실행을 위한 GameManager 추가
using UnityEngine;
using UnityEngine.SceneManagement;
public class GameManager : MonoBehaviour
{
public int targetScore = 10;
private int currentScore = 0;
public void AddScore()
{
currentScore++;
Debug.Log("Current Score: " + currentScore);
if (currentScore >= targetScore)
{
Debug.Log("Game Clear!");
}
}
public void RestartGame()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
}
7. 게임 완성 및 빌드
7.1 게임 테스트 및 조정
게임을 실행하며 이동, 충돌, AI 동작 등을 테스트하고 조정합니다.
7.2 빌드 설정
- File > Build Settings에서 PC, Mac & Linux Standalone 선택
- Scenes In Build에 현재 씬 추가
- Build 버튼 클릭 후 실행 파일 생성
마무리
이번 포스트에서는 Unity와 C#을 사용하여 2D 게임을 제작하는 기본적인 과정을 살펴보았습니다.
플레이어 이동, 점프, 충돌 감지, 카메라 이동, 적 AI 구현, 점수 시스템 및 게임 매니저 추가 등 실제 게임을 실행할 수 있도록 보강하였습니다.
이제 이 코드를 기반으로 새로운 맵을 만들고, UI를 추가하여 더욱 재미있는 게임으로 발전시켜 보세요! 🚀
.png)
댓글
댓글 쓰기