캡슐 콜라이더
캐릭터 조인트

캐릭터 컨트롤러

Character ControllerRigidbody 물리적 특성을 사용하지 않는 3인칭 또는 1인칭 플레이어 제어에도 주로 사용됩니다.

프로퍼티

프로퍼티: 기능:
Slope Limit 콜라이더가 표시된 값 이하의 기울기만을 오르도록 제한합니다. (degree)
Step Offset 표시된 값보다 지면에 가까운 경우에만 캐릭터가 계단을 오릅니다. This should not be greater than the Character Controller’s height or it will generate an error.
Skin width 두 콜라이더가 Skin Width와 동일한 깊이에서 서로 관통합니다. Skin Wdith가 커지면 지터가 줄어듭니다. Skin Width가 낮으면 캐릭터가 움직일 수 없게 되는 경우가 있습니다. Radius가 10%일 때 이 값을 설정하는 것이 좋습니다.
Min Move Distance 캐릭터가 표시된 값 미만으로 움직이려 해도 움직이지 않습니다. 지터(Jitter)를 줄이는 데 사용할 수 있습니다. 대부분의 경우 이 값은 0의 상태로 두십시오.
Center 월드 공간에서 캡슐 콜라이더가 상쇄되지만, 캐릭터 피벗이 어떻게 회전하는지에는 영향을 주지 않습니다.
Radius 캡슐 콜라이더 로컬 반경. 이것은 기본적으로 콜라이더의 폭입니다.
Height 캐릭터의 Capsule Collider 높이. 이 값을 변경하면 양수와 음수의 방향으로 Y축을 따라 콜라이더가 확대 축소됩니다.
The Character Controller
The Character Controller

상세정보

기존의 Doom 스타일의 1인칭 제어는 물리적으로 현실적이지 않습니다. 캐릭터는 시속 90마일로 달리고, 즉시 정지하고, 급선회합니다. 이것은 아주 현실적이지 않기 때문에 리지드 바디와 물리적 특성을 사용하여 이 동작을 만드는 것은 비실용적이며, 느낌이 나빠집니다. 이를 해결하기 위해 전용 캐릭터 컨트롤러를 사용합니다. 이것은 단순히 캡슐형 Collider에서 스크립트의 방향으로 이동하도록 지시합니다. 컨트롤러는 이동을 수행하지만, 충돌에 의해 제한됩니다. 벽을 따라 미끄러지고, (Step Offset 보다 낮은 경우) 계단을 오르고, Slope Limit 에서 경사를 오릅니다.

컨트롤러는, 자신의 힘에 반응하지 않고, 자동적으로 Rigidbody를 밀지 않습니다.

캐릭터 컨트롤러에서 강체 또는 오브젝트를 분리하려면, 스크립팅을 통해 OnControllerColliderHit() 함수를 이용하여 충돌하는 오브젝트에 힘을 적용할 수 있습니다.

한편, 플레이어 캐릭터가 물리적 특성의 영향을 받도록 하려면, 캐릭터 컨트롤러 대신 Rigidbody를 사용하는 것이 좋습니다.

캐릭터의 미세 조정

캐릭터의 메쉬에 맞게 HeightRadius 를 수정할 수 있습니다. 인간 캐릭터의 경우는 약 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으로 설정하는 것이 좋습니다.

캐릭터 컨트롤러의 스크립트 레퍼런스의 링크를 참조하십시오.

당사 웹 사이트의 Resources 영역에서 미리 설정된 애니메이션화 및 이동하는 캐릭터 컨트롤러를 나타내는 프로젝트의 샘플을 다운로드할 수 있습니다.

힌트

  • 캐릭터가 자주 작동 정지하는 경우, _Skin Width_를 조정해보십시오.
  • 직접 스크립트를 작성하는 경우, 캐릭터 컨트롤러가 물리적 특성을 사용하여 오브젝트에 영향을 줄 수 있습니다.
  • 캐릭터 컨트롤러는 물리적 특성을 통해 오브젝트의 영향을 받지 않습니다.
  • Inspector에서 캐릭터 컨트롤러 프로퍼티을 변경하는 것은 씬에서 컨트롤러를 재생성할 수 있습니다. 그래서 기존의 트리거 접촉은 모든 관계를 잃어버리고, 다시 컨트롤러가 움직일 때까지 OnTriggerEntered messages를 받을 수도 없습니다.
캡슐 콜라이더
캐릭터 조인트