Unity - Посібник Character Controller
Компонент Character Controller в основному використовується для керування від третьої чи першої особи, де не потрібна фізика Rigidbody.

Традиційне управління від першої особи в стилі Doom не є реалістичним, з погляду фізики. Персонаж біжить зі швидкістю 90 миль на годину, миттєво зупиняється і повертається за лічені миті. Т.к. це нереалістично, використання Rigidbody та фізики щоб створити подібне управління непрактично і ефект буде не той. Рішенням є спеціалізований Character Controller. Він просто створює колайдер (Collider) у формі капсули, який можна рухати в деякому напрямку за допомогою скрипту. Controller подбає про рух, але зіткнення його стримують. Він буде ковзати вздовж стін, підніматися сходами (якщо сходинки нижче ніж Step Offset) і ходити по нахилах з огляду на Slope Limit.
Controller не реагує на сили сам по собі і не відштовхує Rigidbody об'єкти автоматично.
Якщо ви хочете штовхати Rigidbody-тіла або об'єкти, що використовують Character Controller, ви можете застосувати сили до будь-якого об'єкта, в який він врізається через скриптинг за допомогою функції OnControllerColliderHit() .
З іншого боку, якщо ви хочете, щоб персонаж гравця піддавався впливу фізики, то можливо вам було б краще використовувати Rigidbody замість Character Controller.
Налаштування персонажа до бажаного результату
Ви можете змінювати значення Height та Radius для відповідності колайдера заважаю персонажу. Для людиноподібних персонажів рекомендується використовувати висоту близько 2 метрів. Ви також можете змінити центр (Center) капсули у випадку, якщо точка обертання (pivot) не відповідає точному центру персонажа.
Значення Step Offset тежважливо при налаштуванні, переконайтеся, що це значення знаходиться в діапазоні між 0.1 та 0.4 для 2-метрових гуманоїдів.
Slope Limit теж має бути не надто маленьким. Найчастіше використання значення 90 градусів підходить найкраще. Character Controller не зможе повзати по стіну через форму капсули.
Як не застрягти
Skin Width одна з найкритичніших властивостей для правильного налаштування Character Controller. Якщо вам персонаж застряг, то швидше за все ваше значення Skin Width надто мало. Skin Width дозволяє об'єктам злегка перетинати Controller, але зменшує тряску та захищає від застрягання.
Досить непоганою практикою є збереження значення Skin Width як мінімум більше ніж 0.01 і більше 10% радіусу колайдера (Radius).
Див. довідку про скриптинг Character Controller тут
Ви можете завантажити проект-приклад, що демонструє встановлених анімованих і рухомих Character Controller'ів, з нашого веб-сайту тут Resources