캐릭터 컨트롤러 는 리지드바디 물리를 사용하지 않는 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() 함수를 사용하여 컨트롤러와 충돌하는 모든 오브젝트에 힘을 적용할 수 있습니다.
한편 플레이어 캐릭터가 물리에 의해 영향을 받도록 하고 싶을 경우, 캐릭터 컨트롤러 대신 리지드바디를 사용하는 것이 좋습니다.
캐릭터의 메시에 맞도록 Height 와 Radius 를 수정할 수 있습니다. 사람과 비슷한 캐릭터에는 항상 약 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으로 유지할 것을 권장합니다.
여기에서 캐릭터 컨트롤러 스크립트 레퍼런스를 참조하십시오.
CharacterController