Version: Unity 6.0 (6000.0)
언어 : 한국어
캐릭터 컨트롤 소개
리지드바디 물리

Character Controller 컴포넌트 레퍼런스

Switch to Scripting

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

프로퍼티

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

세부 정보

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

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

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

한편 플레이어 캐릭터가 물리에 의해 영향을 받도록 하고 싶을 경우, 캐릭터 컨트롤러 대신 리지드바디를 사용하는 것이 좋습니다.

캐릭터 조정하기

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

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

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

지형물에 걸리지 않기

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

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

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

여기에서 캐릭터 컨트롤러 스크립트 레퍼런스를 참조하십시오.

힌트

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

CharacterController

캐릭터 컨트롤 소개
리지드바디 물리