유니티 기초 강좌: 플레이어 캐릭터

안녕하세요! 오늘은 유니티(Unity) 엔진을 사용하여 플레이어 캐릭터를 만드는 기초적인 방법을 배워보겠습니다. 본 강좌는 유니티에 입문하려는 초보자들을 대상으로 하며, 플레이어 캐릭터의 기본적인 설정, 애니메이션, 조작법에 대해 상세히 설명드릴 예정입니다.

1. 유니티 소개

유니티는 게임 개발에 널리 사용되는 플랫폼으로, 다양한 플랫폼에서 작동하는 2D 및 3D 게임, 시뮬레이션, 증강 현실(AR) 및 가상 현실(VR) 앱을 개발할 수 있습니다. 유니티의 강력한 기능과 사용의 용이성 덕분에 많은 개발자들이 이를 선택하고 있습니다.

1.1 유니티 설치하기

유니티를 사용하기 위해서는 우선 유니티의 최신 버전을 설치해야 합니다. 유니티 허브(Unity Hub)를 설치하면 여러 버전의 유니티를 관리하고 프로젝트를 쉽게 생성할 수 있습니다.

  1. 유니티 공식 웹사이트에 접속합니다.
  2. 유니티 허브를 다운로드하여 설치합니다.
  3. 허브를 실행하고 유니티 버전을 다운로드하여 설치합니다.
  4. 새로운 프로젝트를 생성합니다.

2. 플레이어 캐릭터 만들기

이제 본격적으로 플레이어 캐릭터를 만들어보겠습니다. 캐릭터를 만드는 과정은 크게 3단계로 나눌 수 있습니다.

  • 모델링 및 애니메이션 설정
  • 캐릭터 컨트롤러 설정
  • 캐릭터 조작 스크립트 작성

2.1 모델링 및 애니메이션 설정

플레이어 캐릭터를 만들기 위해서는 먼저 캐릭터의 모델과 애니메이션이 필요합니다. 3D 모델은 Blender, Maya 등의 툴을 사용하여 만들어도 되고, 마켓플레이스에서 무료 혹은 유료로 다운로드할 수 있습니다.

모델링이 완료되면, 애니메이션을 설정해야 합니다. Unity에서는 애니메이셔너(Animator)를 사용하여 애니메이션을 관리할 수 있습니다. 다음은 애니메이션을 설정하는 방법입니다.

애니메이션 가져오기

  1. 유니티 에디터에서 Assets 폴더에 캐릭터 모델과 애니메이션 파일을 드래그 앤 드롭합니다.
  2. 모델을 선택한 후, 인스펙터 창에서 Animation 탭을 찾습니다.
  3. 애니메이션 클립을 연결하여 애니메이션 상태를 설정합니다.

애니메이션 컨트롤러 만들기

애니메이션 컨트롤러를 만들고 캐릭터의 다양한 상태(대기, 이동, 점프 등)를 정의합니다.

  1. The Assets 폴더에서 마우스 우클릭 후 Create > Animator Controller를 선택합니다.
  2. 생성된 애니메이션 컨트롤러를 더블 클릭하여 애니메이션 상태 머신을 엽니다.
  3. 캐릭터의 애니메이션 클립을 상태 머신에 드래그하여 추가합니다.

2.2 캐릭터 컨트롤러 설정

플레이어 캐릭터를 조작하기 위해 캐릭터 컨트롤러를 설정해야 합니다. 유니티에서 기본 제공하는 CharacterController 컴포넌트를 사용합니다.

  1. 플레이어 캐릭터 오브젝트를 선택합니다.
  2. 인스펙터 창에서 Add Component 버튼을 클릭하고, Character Controller를 검색하여 추가합니다.
  3. Character Controller의 크기와 중심점을 조절합니다.

2.3 캐릭터 조작 스크립트 작성

캐릭터를 조작하기 위해 C# 스크립트를 작성해야 합니다. Scripts 폴더를 만들고 새로운 C# 스크립트를 생성합니다. 다음은 간단한 이동 스크립트 예시입니다:

using UnityEngine;

public class PlayerMovement : MonoBehaviour {
    public float speed = 5f;
    private CharacterController controller;

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

    void Update() {
        float moveX = Input.GetAxis("Horizontal");
        float moveZ = Input.GetAxis("Vertical");

        Vector3 move = transform.right * moveX + transform.forward * moveZ;
        controller.Move(move * speed * Time.deltaTime);
    }
}

이 코드는 기본적인 2D 이동을 처리합니다. ‘WASD’ 또는 화살표 키를 사용하여 캐릭터를 이동할 수 있습니다.

3. 고급 설정

기본적인 캐릭터 설정을 완료한 후에는 캐릭터의 설정을 더욱 고급화할 수 있습니다. 여기서는 점프와 충돌 처리를 추가해보겠습니다.

3.1 점프 추가하기

점프 기능을 추가하려면 중력과 점프 높이를 고려해야 합니다. 다음은 수정된 스크립트 예시입니다.

public class PlayerMovement : MonoBehaviour {
    public float speed = 5f;
    public float jumpHeight = 2f;
    private CharacterController controller;
    private Vector3 velocity;
    private bool isGrounded;

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

    void Update() {
        isGrounded = controller.isGrounded;

        if (isGrounded && velocity.y < 0) {
            velocity.y = 0f;
        }

        float moveX = Input.GetAxis("Horizontal");
        float moveZ = Input.GetAxis("Vertical");
        Vector3 move = transform.right * moveX + transform.forward * moveZ;
        controller.Move(move * speed * Time.deltaTime);

        if (Input.GetButtonDown("Jump") && isGrounded) {
            velocity.y += Mathf.Sqrt(jumpHeight * -2f * Physics.gravity.y);
        }

        velocity.y += Physics.gravity.y * Time.deltaTime;
        controller.Move(velocity * Time.deltaTime);
    }
}

3.2 애니메이션과 스크립트 연결하기

캐릭터의 애니메이션과 조작 스크립트를 연결하여 보다 사실적인 플레이어 피드백을 제공할 수 있습니다. 이를 위해 Animator를 수정하고, 각 애니메이션 상태에 맞춰 파라미터를 설정합니다.

4. 결론

이번 강좌에서는 유니티를 이용해 플레이어 캐릭터를 만드는 기초적인 방법을 배워보았습니다. 기본적인 움직임과 점프 기능을 추가한 후, 앞으로는 인공지능(AI), 적 캐릭터와의 상호작용, UI 요소 등을 추가하여 게임을 더욱 풍부하게 만드는 방법에 대해 알아볼 수 있습니다.

게임 개발은 끊임없는 학습과 실험이 필요합니다. 여러분도 다양한 시도를 통해 자신만의 게임을 만들어보시길 바랍니다. 다음 강좌에서는 적 캐릭터의 AI에 대해 알아보겠습니다. 감사합니다!