Unity 캐릭터 컨트롤러 가이드

Unity에는 다양한 게임에서 캐릭터를 제어하는 데 사용할 수 있는 캐릭터 컨트롤러(Character Controller) 컴포넌트가 있습니다. 이 문서에서는 캐릭터 컨트롤러의 주요 기능 및 설정에 대해 설명하고 활용 예제를 제시합니다.

캐릭터 컨트롤러란?

캐릭터 컨트롤러는 Rigidbody 물리를 사용하지 않고 1인 또는 3인 플레이어 캐릭터를 제어할 수 있는 컴포넌트입니다. 캡슐 형태의 collider로 캐릭터를 움직이게 하며, 충돌 시 제약을 받습니다.

주요 속성

속성 기능
Slope Limit 지정된 각도 이하의 경사에서만 캐릭터가 오를 수 있도록 제한합니다.
Step Offset 지정된 높이 이하의 계단을 올라가기 위한 값으로, 캐릭터의 높이보다 작아야 합니다.
Skin Width 두 콜라이더가 겹칠 수 있는 간격으로, 이 값이 커질수록 지터링이 줄어듭니다.
Min Move Distance 캐릭터가 이 값 이하로 움직이려 할 경우 움직이지 않도록 합니다. 보통 이 값은 0으로 설정하는 것이 좋습니다.
Center 콜라이더의 중심점을 오프셋하여 월드 공간 내에서 위치를 조정합니다.
Radius 캡슐 콜라이더의 반지름으로, 주로 캐릭터의 너비로 사용됩니다.
Height 캐릭터의 캡슐 콜라이더 높이를 조정합니다.

캐릭터 컨트롤러의 장점

  • 비현실적인 동작 간소화: 일반적인 물리에는 의존하지 않고 스크립트를 통해 캐릭터를 제어할 수 있습니다.
  • 충돌 처리: 캐릭터가 벽에 부딪히면 자연스럽게 이동이 조절됩니다.
  • 계단과 경사 처리: 지정한 Step Offset과 Slope Limit를 통해 자연스러운 이동 가능한 면을 설정할 수 있습니다.

캐릭터 세부 조정

  • 인간형 캐릭터의 경우, Height는 2미터 정도로 설정하는 것이 권장됩니다.
  • Slope Limit은 너무 작지 않도록 해야 하며, 대부분의 경우 90도 설정이 적합합니다.
  • Skin Width는 최소 0.01보다 크게 설정하고, Radius의 10% 이상으로 설정하는 것이 좋습니다.

활용 예제

1. 기본 이동 스크립트

void Update()
{
    float horizontal = Input.GetAxis("Horizontal");
    float vertical = Input.GetAxis("Vertical");

    Vector3 movement = new Vector3(horizontal, 0, vertical);
    controller.Move(movement * speed * Time.deltaTime);
}

2. 점프 기능 추가

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

3. 충돌 응답 처리

void OnControllerColliderHit(ControllerColliderHit hit)
{
    Rigidbody body = hit.collider.attachedRigidbody;
    if (body != null && !body.isKinematic)
    {
        body.AddForceAtPosition(controller.velocity * pushForce, hit.point);
    }
}

유의 사항

  • 캐릭터가 자주 걸리는 경우 Skin Width를 조정하십시오.
  • Unity 인스펙터에서 캐릭터 컨트롤러 속성을 변경하면 씬 내의 컨트롤러가 재생성되므로 기존 트리거 연락처가 사라질 수 있습니다.

캐릭터 컨트롤러는 다양한 게임에서 유용하게 활용될 수 있으므로, 위의 설정과 예제를 바탕으로 창의적인 캐릭터 이동 구현에 도전해보세요!

Read more

Unity 매뉴얼 스크립팅 API 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 간단한 해설과 활용 예제들을 포함하고 있습니다. Unity는 게임 개발 플랫폼으로, 스크립팅 API를 통해 게임의 다양한 기능을 제어하고 수정할 수 있습니다. 버전 Unity 스크립팅 API는 여러 버전으로 제공됩니다. 주의 깊게 선택하여 사용하는 것이 중요합니다. 버전 설명 2023.2 최신 기능 및 버그 수정이 추가됨

By 이재협/실장/시스템개발실/PHYSIA

Unity 매뉴얼 스크립팅 API 설명서 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 정보를 제공하며, 버전에 따라 다르게 적용되는 내용들을 설명합니다. 본 문서에서는 주요 내용을 간단히 정리하고 활용 가능 예제를 통해 이해를 돕겠습니다. 기본 개념 Unity에서 스크립팅 API는 게임 오브젝트와 그들의 동작을 제어하기 위한 강력한 도구입니다. 이를 통해 게임의 로직, 물리 엔진, 애니메이션 및 사용자 인터페이스를

By 이재협/실장/시스템개발실/PHYSIA

Unity 스크립팅 API 가이드

이 문서는 Unity의 스크립팅 API에 대해 설명합니다. Unity는 게임 개발을 위한 인기 있는 엔진으로, 강력한 스크립팅 기능을 제공합니다. 이 가이드는 Unity에서 스크립트를 작성하고 사용하는 방법을 이해하는 데 도움을 드립니다. 목차 * Unity 스크립팅 소개 * 기본 스크립트 생성 * 스크립트 사용 예제 * 응용 프로그램 * 참고 자료 Unity 스크립팅 소개 Unity는 C# 프로그래밍 언어를

By 이재협/실장/시스템개발실/PHYSIA