# Character Controller 컴포넌트 레퍼런스

> Reference page for the Character Controller component.

**캐릭터 컨트롤러** 는 **리지드바디** 물리를 사용하지 않는 3인 또는 1인 플레이어 컨트롤에 주로 사용됩니다.


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/Inspector-CharacterController.png)

## 프로퍼티##properties

| ***프로퍼티:***           | ***기능:***                                                                                                       |
| --------------------- | --------------------------------------------------------------------------------------------------------------- |
| **Slope Limit**       | 콜라이더가 명시된 값보다 작은 경사(단위:도)의 슬로프만 오르도록 제한합니다.                                                                     |
| **Step Offset**       | 캐릭터가 표시된 값보다 지면에 가까이 있는 경우에만 계단을 오릅니다. 이 값은 캐릭터 컨트롤러의 높이보다 커서는 안 되며, 그렇지 않으면 오류가 발생합니다.                         |
| **Skin width**        | 두 콜라이더가 스킨 너비만큼 서로 관통할 수 있습니다. 스킨 너비가 클수록 지터가 감소합니다. 스킨 너비가 작으면 캐릭터가 멈출 수 있습니다. 이 값을 Radius의 10%로 설정하는 것이 좋습니다. |
| **Min Move Distance** | 캐릭터가 표시된 값 미만으로 이동하려고 하면 전혀 움직이지 않습니다. 지터를 줄이기 위해 사용할 수 있습니다. 대부분의 경우 이 값을 0으로 유지해야 합니다.                        |
| **Center**            | 월드 공간에서 캡슐 콜라이더를 오프셋하며 캐릭터의 피벗에는 영향을 주지 않습니다.                                                                   |
| **Radius**            | 캡슐 콜라이더의 반지름 길이입니다. 이는 기본적으로 콜라이더의 너비입니다.                                                                       |
| **Height**            | 캐릭터의 **캡슐 콜라이더** 높이입니다. 이 값을 변경하면 콜라이더가 Y축을 따라 양의 방향과 음의 방향으로 스케일합니다.                                           |


**캐릭터 컨트롤러:**
![](/api/media?file=/engine/6000.0/media/images/CharacterControllerWindow.jpg)

## 세부 정보##details

기존의 돔 스타일 1인칭 컨트롤은 물리적으로 사실적이지 않습니다. 캐릭터는 시간당 90마일을 달리며 즉시 정지한 후 아주 작은 반경에서 급격히 방향을 전환합니다. 너무 비현실적이므로 이 동작을 생성하기 위해 리지드바디와 물리를 사용하는 것은 실용적이지 않고 잘못된 느낌을 줄 수 있습니다. 해결 방법은 특수 캐릭터 컨트롤러입니다. 이는 단순히 스크립트에서 어떤 방향으로 이동할 수 있는 캡슐 모양의 **콜라이더** 입니다. 그러면 컨트롤러가 이동을 수행하지만 충돌의 제약을 받습니다. 벽을 따라 미끄러지고 계단(**Step Offset** 보다 낮은 경우)을 오르고 **Slope Limit** 내에서 경사로를 걸어갑니다.

컨트롤러는 자체의 힘에는 반응하지 않으며 자동으로 리지드바디를 푸시하지 않습니다.

캐릭터 컨트롤러를 이용하여 리지드바디나 오브젝트를 푸시하고 싶을 경우, 스크립팅을 통해 **OnControllerColliderHit()** 함수를 사용하여 컨트롤러와 충돌하는 모든 오브젝트에 힘을 적용할 수 있습니다.

한편 플레이어 캐릭터가 물리에 의해 영향을 받도록 하고 싶을 경우, 캐릭터 컨트롤러 대신 [리지드바디](/engine/6000.0/manual/physics-section/physics-overview/rigidbody/class-rigidbody.md)를 사용하는 것이 좋습니다.

### 캐릭터 조정하기##fine-tuning-your-character

캐릭터의 메시에 맞도록 **Height** 와 **Radius** 를 수정할 수 있습니다. 사람과 비슷한 캐릭터에는 항상 약 2미터를 사용하는 것이 좋습니다. 피벗 포인트가 정확히 캐릭터의 중앙에 있지 않은 경우 캡슐의 **Center** 를 변경할 수도 있습니다.

**Step Offset** 도 영향을 미칠 수 있습니다. 2미터 크기의 사람일 경우 이 값을 0.1-0.4로 설정해야 합니다.

**Slope Limit** 은 너무 작아서는 안 됩니다. 90도 값을 사용하는 경우가 많습니다. 캐릭터 컨트롤러는 캡슐 모양으로 인해 벽을 오를 수 없습니다.

### 지형물에 걸리지 않기##don't-get-stuck

**Skin Width** 는 캐릭터 컨트롤러를 조정할 때 가장 중요한 프로퍼티 중 하나입니다. 만약 캐릭터가 갇히게 되면 **Skin Width** 가 너무 작기 때문일 것입니다. **Skin Width** 는 오브젝트가 컨트롤러를 약간 관통하도록 하지만 지터를 제거하고 멈추지 않도록 합니다.

**Skin Width** 를 최소한 0.01보다 크고 **Radius** 의 10%보다 크게 설정하는 것이 좋습니다.

**Min Move Distance** 를 0으로 유지할 것을 권장합니다.

[여기](/engine/6000.0/script-reference/unity-engine/character-controller.md)에서 캐릭터 컨트롤러 스크립트 레퍼런스를 참조하십시오.

## 힌트##hints

* 캐릭터가 자주 멈출 경우 **Skin Width** 를 조정해 보십시오.
* 스크립트를 직접 작성할 경우 캐릭터 컨트롤러가 물리를 사용하는 오브젝트에 영향을 줄 수 있습니다.
* 캐릭터 컨트롤러는 물리를 통한 오브젝트의 영향을 받지 않습니다.
* 인스펙터의 캐릭터 컨트롤러 프로퍼티를 변경하면 씬에 있는 컨트롤러가 재생성됩니다. 따라서 기존의 모든 트리거 컨택트가 사라져서 컨트롤러가 다시 움직이기 전까지 OnTriggerEntered 메시지를 받지 못합니다.
* 레이캐스트 같은 쿼리에 사용되는 캐릭터 컨트롤러의 캡슐이 약간 줄어들 수 있습니다. 따라서 쿼리가 캐릭터 컨트롤러의 기즈모에 닿는 것처럼 보일 때에도 어떤 특수한 경우에는 감지되지 않을 수 있습니다.
