Unity에서 간단한 2D 플랫포머 만들기

이 튜토리얼에서는 Unity에서 기본 2D 플랫포머를 만들 것입니다. 여기에는 이동, 점프, 플랫폼과 상호 작용할 수 있는 플레이어 캐릭터를 만드는 것이 포함됩니다. 또한 장애물과 수집품과 같은 몇 가지 기본 게임 요소를 추가합니다.

1. 프로젝트 설정

새로운 Unity 2D 프로젝트를 설정하는 것으로 시작해 보겠습니다.

  1. Unity을 열고 새로운 2D 프로젝트를 만듭니다.
  2. 파일 > 새 장면으로 가서 2D 모드를 선택합니다.
  3. 장면을 MainScene로 저장합니다.

2. 플레이어 캐릭터 생성

먼저 스프라이트를 사용하여 간단한 플레이어 캐릭터를 만들고 이동 기능을 추가합니다.

  1. Hierarchy 창에서 마우스 오른쪽 버튼을 클릭하고 Create Empty를 선택합니다. 이 객체의 이름을 Player로 지정합니다.
  2. 인스펙터에서 컴포넌트 추가를 클릭하여 플레이어 객체에 스프라이트 렌더러 컴포넌트를 추가합니다.
  3. 캐릭터로 사용할 스프라이트를 선택하려면 직접 만들거나 Unity Asset Store에서 2D 자산을 가져옵니다.
  4. 물리 및 충돌 감지를 위해 Player 객체에 Rigidbody2DBoxCollider2D를 추가합니다.

3. 플레이어 이동 스크립트 작성

이제 플레이어가 움직이고 점프할 수 있는 스크립트를 작성해 보겠습니다. 다음 단계를 따르세요.

  1. Project 창에서 마우스 오른쪽 버튼을 클릭하고 Create > C# Script를 선택합니다. 이름을 PlayerController로 지정합니다.
  2. 이 스크립트를 프로젝트 창에서 계층 구조의 플레이어로 끌어서 플레이어 객체에 연결합니다.

스크립트 내용을 다음과 같이 바꾸세요.

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float moveSpeed = 5f;
    public float jumpForce = 7f;
    private Rigidbody2D rb;
    private bool isGrounded = true;

    void Start()
    {
        rb = GetComponent();
    }

    void Update()
    {
        // Player movement
        float moveInput = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y);

        // Jumping
        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
        {
            rb.velocity = new Vector2(rb.velocity.x, jumpForce);
            isGrounded = false;
        }
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        // Check if player is touching the ground
        if (collision.collider.CompareTag("Ground"))
        {
            isGrounded = true;
        }
    }
}

4. 플랫폼 및 환경 생성

이제 플레이어가 점프할 수 있는 플랫폼을 만들어 보겠습니다.

  1. 계층 구조에서 마우스 오른쪽 버튼을 클릭하고 빈 항목 만들기를 선택한 다음 플랫폼로 이름을 지정합니다.
  2. 플랫폼에 BoxCollider2DSprite Renderer를 추가합니다.
  3. 플랫폼에 대한 스프라이트를 선택합니다(예: 평평한 직사각형).
  4. Ctrl+D (Mac에서는 Cmd+D)를 눌러 플랫폼을 복제하고 복사본의 위치를 ​​지정하여 레벨을 만듭니다.
  5. 플레이어의 점프 로직을 위해 인스펙터에서 이러한 객체를 지면로 태그합니다.

5. 장애물 추가

게임을 더 어렵게 만들려면 몇 가지 장애물을 추가해 보겠습니다.

  • 빈 게임오브젝트를 새로 만들고 장애물이라고 이름을 지정합니다.
  • 이 객체에 BoxCollider2DSprite Renderer를 추가합니다.
  • 장애물(예: 스파이크나 위험 요소)에 대한 스프라이트를 선택합니다.
  • 플레이어의 OnCollisionEnter2D 메서드에서 장애물과의 충돌을 감지하고 게임을 다시 시작하거나 체력을 깎을 수 있습니다.

6. 수집품 추가

동전이나 파워업과 같은 수집품을 추가할 수도 있습니다.

  • 빈 게임 오브젝트를 하나 더 만들고 Collectible이라고 이름을 지정합니다.
  • CircleCollider2D (트리거로 설정)와 Sprite Renderer를 추가하여 수집품을 표현합니다.
  • 플레이어가 아이템을 수집하는 시점을 감지하는 간단한 스크립트를 작성하세요.
using UnityEngine;

public class Collectible : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player"))
        {
            // Add points or other effects here
            Destroy(gameObject); // Remove the collectible from the scene
        }
    }
}

7. 게임 테스트 및 조정

이제 기본적인 메커니즘이 마련되었으므로 Play 버튼을 눌러 게임을 테스트할 수 있습니다. 다음을 조정해 보세요.

  • moveSpeedjumpForce 값을 수정하여 플레이어의 이동 및 점프 속도를 조정합니다.
  • 다양한 레벨을 만들려면 플랫폼과 장애물을 복제하세요.
  • 게임을 시각적으로 매력적으로 만들려면 배경 요소나 장식을 추가하세요.

8. 플랫포머 강화

플랫포머를 다음 단계로 끌어올리려면 다음을 추가하는 것을 고려하세요.

  • 플레이어를 위한 걷기, 점프 애니메이션 등의 애니메이션입니다.
  • 점프, 아이템 수집, 장애물 타격에 대한 음향 효과.
  • 플레이어의 움직임을 따라가는 카메라로 게임을 더욱 역동적으로 볼 수 있습니다.

결론

이 간단한 2D 플랫포머 설정으로 이제 더 많은 기능, 레벨, 세련미로 확장할 수 있는 기본 게임 구조가 생겼습니다. 다양한 메커니즘을 실험하고 고유한 플랫포머를 만들어 보세요.