유니티 2D 게임개발, 캐릭터 컨트롤러 구현 2D 캐릭터의 이동, 점프, 애니메이션 전환 등을 위한 스크립트 작성.

안녕하세요! 오늘은 유니티로 2D 게임을 개발하는 과정에서 캐릭터 컨트롤러를 구현하는 방법에 대해 자세히 알아보겠습니다. 우리는 2D 캐릭터의 이동, 점프, 및 애니메이션 전환을 위한 스크립트를 작성할 것입니다. 이 tutorial은 유니티의 기본 사용법을 알고 있는 사람을 대상으로 하므로, 유니티의 인터페이스에 불편함이 없는 사용자를 위해 설계되었습니다.

1. 프로젝트 설정

먼저 유니티에서 새 2D 프로젝트를 생성합니다. 다음과 같이 설정해 주세요:

  • 프로젝트 이름: 2DCharacterController
  • 템플릿: 2D

프로젝트가 생성되면, 필요한 에셋을 가져옵니다. 우리는 기본적인 2D 스프라이트로 캐릭터를 만들 것입니다. 다음과 같은 스프라이트가 필요합니다:

  • 캐릭터 스프라이트 (idle, run, jump)
  • 배경 스프라이트

이 스프라이트들을 Assets 폴더에 추가합니다.

2. 씬 구성하기

씬에 사용할 스프라이트를 배치합니다. 스프라이트 렌더러를 이용해 배경과 캐릭터를 씬에 추가합니다. 계층 구조에서 Create > 2D Object > Sprite를 선택해 새로운 게임 오브젝트를 생성한 후, 스프라이트를 설정해 줍니다.

3. 캐릭터 컨트롤러 스크립트 작성하기

이제 캐릭터를 제어할 스크립트를 작성할 차례입니다. Assets 폴더에서 새 C# 스크립트를 생성하고 PlayerController라는 이름을 붙입니다. 이 스크립트는 캐릭터의 이동, 점프 및 애니메이션 전환을 처리합니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float moveSpeed = 5f;
    public float jumpForce = 10f;
    public bool isGrounded;

    private Rigidbody2D rb;
    private Animator animator;

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

    void Update()
    {
        Move();
        Jump();
        Animate();
    }

    private void Move()
    {
        float moveInput = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y);
    }

    private void Jump()
    {
        if (Input.GetButtonDown("Jump") && isGrounded)
        {
            rb.AddForce(new Vector2(0, jumpForce), ForceMode2D.Impulse);
        }
    }

    private void Animate()
    {
        float moveInput = Input.GetAxis("Horizontal");
        animator.SetFloat("Speed", Mathf.Abs(moveInput));
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Ground"))
        {
            isGrounded = true;
        }
    }

    private void OnCollisionExit2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Ground"))
        {
            isGrounded = false;
        }
    }
}

4. 애니메이션 추가하기

캐릭터의 애니메이션을 추가하기 위해 Animator 컴포넌트를 사용합니다. 먼저 Animator Controller를 생성해야 합니다. Assets 폴더에서 우클릭 후 Create > Animator Controller를 선택하고, 이를 Character 오브젝트에 드래그하여 추가합니다.

Animator Controller를 더블 클릭하여 Animator 창을 열고 다음과 같은 애니메이션을 추가합니다:

  • Idle
  • Run
  • Jump

각 애니메이션을 적절하게 연결하여 전환 조건을 설정합니다. 예를 들어, Speed 파라미터에 따라 Idle과 Run 애니메이션이 전환되도록 설정할 수 있습니다.

5. 실제 게임 테스트하기

이제 모든 설정이 완료되었습니다. 유니티 에디터에서 Play 버튼을 클릭하여 게임을 테스트해 봅시다. 캐릭터가 좌우로 이동하고, 점프하며, 애니메이션이 올바르게 전환되는지 확인합니다.

6. 추가적인 기능 구현하기

기본적인 캐릭터 움직임과 점프 외에도 다양한 기능을 추가하여 게임을 더욱 풍부하게 만들 수 있습니다. 예를 들어:

  • 더블 점프
  • 공격 애니메이션 및 기능 추가
  • 아이템 수집 시스템 구현

각 기능은 기본적인 이동 및 점프 기능과 비슷한 방식으로 추가할 수 있습니다. 새로운 메서드를 작성하고 이를 Update() 함수에 호출하면 됩니다.

결론

오늘은 유니티에서 2D 게임의 캐릭터 컨트롤러를 구현하는 방법에 대해 알아보았습니다. 이동, 점프, 애니메이션 전환 간의 관계를 이해했길 바랍니다. 이 튜토리얼을 바탕으로 더 많은 기능을 추가하여 자신의 게임을 발전시켜 보세요. 게임 개발은 끝없는 창의성의 세계입니다!

이제 여러분의 아이디어를 구현할 차례입니다. 유니티 활용에 대한 궁금한 점이 있으면 언제든지 질문해 주세요. 재미있고 흥미로운 게임 개발 되세요!

참고자료