Компонент Character Controller в основном используется для управления от третьего или первого лица, где не требуется физика Rigidbody.
Свойство: | Функция: |
---|---|
Slope Limit | Ограничивает возможность коллайдер взбираться по склонам только по склонам равным или меньше чем указанное значение. |
Step Offset | Персонаж переступит на поверхность, только если она ближе к земле, чем заданное значение. |
Skin width | 2 коллайдера могут пересечься друг с другом на глубину, равную значению Skin Width. Большее значение уменьшит степень тряски. Слишком низкое значение может вызвать застревание персонажа. Наилучшим вариантом является установление этого значения равным 10% от радиуса. |
Min Move Distance | Если персонаж попробует сдвинуться ниже указанной величины, то он не сдвинется. Это может быть использовано, чтобы уменьшить тряску. В большинстве ситуаций это значение стоит оставить равным нулю(0). |
Center | Сдвиг коллайдера в мировом пространстве без влияния на то, как вращается персонаж. |
Radius | Значение радиуса коллайдера. По сути дела, это ширина коллайдера. |
Height | Высота коллайдера Capsule Collider персонажа. Изменение её растянет коллайдер вдоль оси X в оба направления. |
коллайдер (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 не сможет ползать по стена в виду формы капсулы.
The Skin Width is one of the most critical properties to get right when tuning your Character Controller. If your character gets stuck it is most likely because your Skin Width is too small. The Skin Width will let objects slightly penetrate the Controller but it removes jitter and prevents it from getting stuck.
Достаточно неплохой практикой является сохранение значения Skin Width как минимум больше чем 0.01 и и больше чем 10% радиуса коллайдера (Radius).
Мы рекомендуем оставлять значение Min Move Distance равным 0.
См. справку по скриптингу Character Controller здесь
You can download an example project showing pre-setup animated and moving character controllers from the Resources area on our website.