유니티 기초 강좌: 캐릭터의 좌우 회전

안녕하세요! 오늘은 유니티에서 캐릭터의 좌우 회전을 구현하는 방법에 대해 알아보겠습니다. 이 강좌에서는 유니티의 기초부터 시작해 캐릭터 회전 로직을 어떻게 작성하는지 단계별로 설명하겠습니다. 게임 개발의 기본 중 하나인 캐릭터 회전은 언리얼 엔진과 같은 다른 게임 엔진에서도 중요한 개념입니다. 하지만 유니티에서 이를 구현하는 방식은 다소 다릅니다. 이번 강좌를 통해 여러분은 유니티에서 캐릭터를 자유롭게 회전시키는 기술을 익힐 수 있습니다.

1. 유니티 환경 설정

유니티를 시작하기 전에, 먼저 환경을 설정해야 합니다. 유니티를 인스톨하고, 새로운 프로젝트를 생성합니다. 3D 템플릿을 선택하고 프로젝트를 시작하세요. 이후에는 기본적인 3D 모델인 ‘Capsule’이나 자신이 만든 캐릭터 모델을 씬에 추가합니다.

2. 캐릭터 컨트롤러 추가

캐릭터를 제어하기 위해 ‘Character Controller’ 컴포넌트를 추가합니다. 이는 캐릭터의 물리적 충돌을 관리하고 상태를 유지하게 해줍니다. ‘Capsule’ 객체를 선택하고, Inspector 창에서 ‘Add Component’ 버튼을 클릭한 후 ‘Character Controller’를 선택하여 추가합니다. 이로써 기본적인 캐릭터 설정이 완료되었습니다.

3. 스크립트 작성

이제 캐릭터의 이동 및 회전을 제어할 스크립트를 작성해 보겠습니다. ‘Scripts’라는 새로운 폴더를 만들어 주세요. 이 안에 ‘PlayerController.cs’라는 스크립트 파일을 생성합니다. 이 스크립트는 사용자 입력에 따라 캐릭터를 회전시키는 로직을 담당합니다.

3.1. 스크립트 코드 작성

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float speed = 5.0f;

    void Update()
    {
        Move();
    }

    void Move()
    {
        float horizontal = Input.GetAxis("Horizontal");
        Vector3 direction = new Vector3(horizontal, 0, 0);
        
        if (direction != Vector3.zero)
        {
            float rotationAngle = Mathf.Atan2(direction.x, direction.z) * Mathf.Rad2Deg;
            Quaternion rotation = Quaternion.Euler(0, rotationAngle, 0);
            
            transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * speed);
            transform.Translate(Vector3.forward * speed * Time.deltaTime);
        }
    }
}

위의 코드는 캐릭터가 좌우 입력을 받으면 해당 방향으로 회전하고, 이동하는 기본적인 로직입니다. ‘Input.GetAxis(“Horizontal”)’을 사용하여 좌우 키 입력을 감지합니다.

4. 스크립트 연결

작성한 스크립트를 캐릭터에 연결해야 합니다. ‘Capsule’ 또는 자신이 만든 캐릭터 모델을 선택한 후, Inspector 창에서 ‘Add Component’ 버튼을 눌러 ‘PlayerController’를 추가합니다. 이제 우리가 작성한 코드가 캐릭터에 적용됩니다.

5. 캐릭터 회전 이해하기

캐릭터의 좌우 회전에서 중요한 것은 회전의 부드러움입니다. ‘Quaternion.Slerp’ 함수를 사용하여 두 개의 쿼터니언(현재 회전과 목표 회전) 간의 선형 보간을 수행합니다. 이를 통해 캐릭터가 자연스럽게 회전하도록 할 수 있습니다. ‘Mathf.Atan2’ 함수는 두 점 간의 각도를 계산하는 데 사용되며, 이 각도를 이용해 캐릭터의 회전을 이루어냅니다.

6. 입력 시스템 개선하기

이제 기본적인 회전이 구현되었으므로, 입력 시스템을 개선하여 더욱 직관적으로 만들 수 있습니다. 예를 들어, 이동 방향에 따라 캐릭터가 회전하도록 유도할 수 있습니다. 이를 위해 애니메이션과의 연동이나 스무스한 동작을 추가할 수 있습니다.

6.1. 애니메이션 추가하기

캐릭터에 애니메이션을 추가하여 움직일 때 자연스럽게 보이도록 할 수 있습니다. ‘Animator’ 컴포넌트를 추가한 후 애니메이션 상태 머신을 구성하여, ‘Run’, ‘Idle’과 같은 상태로 전환할 수 있도록 설정합니다. 애니메이션과 회전을 연동시키면 보다 몰입감 있는 경험을 제공합니다.

7. 테스트 및 디버깅

모든 설정이 완료되었다면, 게임을 플레이 모드로 전환하여 캐릭터의 이동과 회전을 테스트해보세요. 필요에 따라 변수들을 조정하여 감도를 맞추고, 캐릭터가 움직이는 방향에 따라 자연스럽게 회전하도록 확인합니다. 또한, 회전 속도나 이동 속도를 조정하여 더 나은 사용자 경험을 제공할 수 있습니다.

8. 결론

이번 강좌에서는 유니티에서 캐릭터의 좌우 회전을 구현하는 방법에 대해 알아보았습니다. 캐릭터 모델을 추가하고, 이동 및 회전 로직을 구현하는 과정은 게임 개발의 기초적인 부분이지만, 아주 중요한 내용입니다. 향후 이 기본기를 바탕으로 더 복잡하고 다채로운 캐릭터 조작 시스템으로 발전시킬 수 있습니다.

다음 강좌에서는 보다 심화된 내용으로 캐릭터 애니메이션과의 상호작용, 카메라 시스템 등에 대해 다룰 예정이니 많은 기대 부탁드립니다.