CharacterController
Пример CharacterController из набора примеров C# Component Samples демонстрирует следующее:
- Реализация контроллера персонажей от первого лица с использованием компонента First Person Controller, назначенного PlayerDummy
- Установка коллизионной капсулы
- Обнаружение пересечения с помощью формы-поверхности collision и детализация столкновения с помощью пересечения поверхностей
Компонент контроллера от первого лица#
Компонент FirstPersonController реализует основные элементы управления плеером от первого лица. Сам игрок состоит из камеры и формы капсулы для обнаружения столкновений. Компонент имеет следующие настройки, доступные для настройки:
- Ввод
- Ввод с геймпада
- Body параметры, необходимые для движений
- Параметры камеры
- Параметры движения
- Auto Stepping для преодоления препятствий с определенной высотой и уклоном
- Взаимодействие с объектами для простого взаимодействия с физическими объектами
- Дополнительные настройки
- Настройки отладки для облегчения отладки
Создание игрока#
Чтобы создать игрока, вам нужно создать новый Player Dummy (Create -> Camera -> Dummy) и добавить его в сцену.
Включите опцию Main Player для этого игрока в окне Parameters. Затем добавьте компонент FirstPersonController к этому узлу.
Если вы сохраните мир и запустите приложение, вы сможете управлять плеером со стандартными настройками.
Игрок представлен капсулой с осью, расположенной в нижней части капсулы. При создании игрока преобразование корректируется в зависимости от направления оси Y игрока. Ось Z всегда направлена вверх.
Если камера назначается из редактора, ее положение и направление зависят от положения игрока и вращения в мире: горизонтальный угол - это угол поворота игрока по оси Z, а вертикальный угол - это фактический угол камеры.
Настройки#
Компонент FirstPersonController содержит следующие группы настроек, которые отображаются на вкладке Node окна Parameters после назначения компонента узлу.
Настройки ввода#
Группа Input позволяет настроить клавиши для управления персонажем с помощью клавиатуры и мыши: режимы движения вперед и назад, влево и вправо, бега, прыжка и приседания. Для назначения ключей используются перечисления Input.KEY. Вы также можете настроить чувствительность мыши, которая влияет на скорость вращения камеры.
Ввод с клавиатуры / мыши и геймпада обрабатывается одновременно. Действие с большим отклонением имеет приоритет.
Настройки ввода с геймпада#
Группа Gamepad Input позволяет настроить управление геймпадом. Текущие настройки упрощены: один стик можно настроить на перемещение по горизонтали, а другой - на поворот камеры. Для обоих стиков выставлено отклонение мертвой зоны, дополнительно можно настроить чувствительность камеры. Любые другие действия можно установить с помощью ключей Input.GAMEPAD_BUTTON.
Ввод с клавиатуры / мыши и геймпада обрабатывается одновременно. Действие с большим отклонением имеет приоритет.
Настройки тела#
Группа Body содержит настройки для настройки физического тела и формы игрока, определяемой капсулой.
Use Object Body | Если этот параметр включен, используются тело и форма объекта, которому назначен этот компонент.
Примечание
Чтобы включить эту опцию, объект должен иметь фигуру Dummy Bodyи хотя бы одну фигуруCapsule. Если тело или форма отсутствуют, они будут созданы автоматически на основе значений, установленных в параметрах ниже, с соответствующим предупреждением в консоли. |
---|---|
Capsule Radius | Радиус капсулы, определяющей форму игрока. |
Capsule Height | Высота капсулы, определяющей форму игрока. Имейте в виду, что это значение определяет только высоту цилиндрической части. Полная высота капсулы рассчитывается как capsule height + 2 * capsule radius.
|
Physics Intersection Mask | Маска , которая используется для выборочного обнаружения пересечений физики (с другими физическими объектами, имеющими тела и формы коллайдера, или пересечения лучей с геометрией коллайдера). |
Collison Mask | Маска , которая используется для обнаружения столкновений формы с другими физическими объектами. |
Exclusion Mask | Маска , которая используется для предотвращения столкновений фигуры с другими физическими объектами. |
Настройки камеры#
Группа Camera содержит настройки для настройки камеры.
Camera Mode | Режим назначения камеры игроку:
|
---|---|
FOV | Поле зрения камеры в градусах. |
Near Clipping | Расстояние до ближайшей плоскости отсечения пирамиды обзора игрока, в единицах. |
Far Clipping | Расстояние до дальней плоскости отсечения пирамиды обзора игрока, в единицах. |
Camera Position Offset | Расстояние от камеры до позиции игрока. |
Min Vertical Angle | Минимальный вертикальный угол камеры, т. е. максимально возможный угол обзора вверх. |
Max Vertical Angle | Максимальный вертикальный угол камеры, т.е. максимально возможный угол обзора вниз. |
Настройки движения#
Группа Movement содержит все настройки, необходимые для движений персонажа.
Use Jump | Флаг, разрешающий прыжки, и все соответствующие параметры в логике игрока. | ||||
---|---|---|---|---|---|
Use Crouch | Флаг, позволяющий приседать, и все соответствующие параметры в логике игрока.
Примечание
Если игрок приседает, и кнопка Crouchотпущена, он поднимется, только если выше нет препятствий. Если игрок делает рейз и есть препятствие выше или кнопкаCrouchнажимается снова, игрок снова принимает состояние приседания. |
||||
Use Run | Флаг, разрешающий запуск, и все соответствующие параметры в логике игрока. | ||||
Use Run Default | Флаг, который устанавливает бег по умолчанию для движения игрока. Если это состояние включено, состояние обхода включается с помощью Run Key . | ||||
Crouch Speed | Горизонтальная скорость, используемая для приседания. | ||||
Walk Speed | Горизонтальная скорость, используемая для ходьбы. | ||||
Run Speed | Горизонтальная скорость, используемая для бега. | ||||
Ground Acceleration | Горизонтальное ускорение применяется, когда игрок находится на земле. | ||||
Air Acceleration | Горизонтальное ускорение применяется, когда игрок находится в воздухе. | ||||
Ground Damping | Демпфирование горизонтальной скорости, когда игрок находится на земле. | ||||
Air Damping | Демпфирование горизонтальной скорости при нахождении игрока в воздухе. | ||||
Jump Power | Сила прыжка игрока в режимах бега, ходьбы и холостого хода. | ||||
Crouch Jump Power | Скачок силы игрока в режиме Crouch. | ||||
Crouch Height | Height of the camera when the player is crouching. The minimum value equals to capsule radius x 2, the maximum height is equal to the capsule height. | ||||
Crouch Transition Time | Время, необходимое для перехода между состояниями приседания и стоя. | ||||
Max Ground Angle | Угол, до которого земля считается ровной. Если угол превышен, персонаж не может стоять на месте и скатывается по склону. Если персонаж поднимается на холм, а его угол больше этого значения, персонаж не будет подниматься наверх. | ||||
Max Ceiling Angle | Значение, определяющее максимальный угол, при котором поверхность считается потолком. Если поверхность, с которой соприкасается верхняя часть капсулы, имеет угол меньше этого значения, считается, что персонаж ударился о потолок: его вертикальная скорость становится равной 0, и персонаж начинает падать. Если поверхность над персонажем имеет угол, превышающий это значение, персонаж скользит по этой поверхности. | ||||
Check Move Ray Offset | Смещение луча, который проверяет поверхность, на которую он потенциально может переместиться. Минимальное значение - 0, максимальное - 0.1.
|
||||
Check Move Mask | Маска, используемая для сортировки пересечений с поверхностью. | ||||
Wall Stop Sliding Angle | Горизонтальный угол между направляющим лучом и точкой контакта капсулы со стенкой. Если угол меньше этого значения, игрок не скользит по стене.
![]() |
Настройки автоматического шага#
Группа настроек Auto Stepping настраивает автоматическое преодоление препятствий до определенной высоты. Процесс Auto Stepping состоит из трех этапов: подъем игрока на высоту препятствия, перемещение его на препятствие и решение столкновений, падение на поверхность этого препятствия и разрешение столкновений.
Use Auto Stepping | Флаг для переключения параметра Auto Stepping. |
---|---|
Min Step Height | Минимальная высота препятствия для применения Auto Stepping. Это необходимо, чтобы избежать применения Auto Stepping на ровных поверхностях. |
Max Step Height | Максимальная высота препятствия, которое можно преодолеть с помощью Auto Stepping. |
Max Stair Angle | Максимальный угол наклона для применения автоматического шага. Если персонаж наступает на поверхность с уклоном, угол которого больше, чем значение Max Stair Angle, этот последний шаг отменяется. |
Check Stair Ray Offset | Смещение луча, который проверяет уровень потенциальной лестницы для автоматического перехода. Это смещение вертикальное и в направлении потенциального движения. |
Stairs Detection Angle | Горизонтальный угол, определяющий область проверки контактов капсулы с другими объектами в направлении движения. Позволяет избежать ложного автоперехода возле стен. |
Stair Detection Mask | Маска проверки пересечений с лестницей для автоматического перехода. Если у вас есть лестница со сложной геометрией и вы хотите упростить ее для процесса Auto Stepping, отключите эту маску для сложной геометрии и включите для упрощенной модели. |
Параметры взаимодействия объектов#
Группа Objects Interaction содержит настройки, регулирующие простое физическое взаимодействие игрока с другими физическими объектами.
Use Objects Interaction | Флаг для переключения взаимодействия с другими физическими объектами. Это объекты, которым назначено Rigid Body . |
---|---|
Impulse Multiplier | Множитель импульса, приложенного к твердому телу, с которым игрок сталкивается. |
Расширенные настройки#
Группа Advanced Settings содержит вспомогательные настройки для обновления плеера.
Player Fps | Минимальная частота кадров обновления для игрока. Если текущий FPS меньше этого значения, плеер обновляется несколько раз за кадр. |
---|---|
Collision Iterations | Количество итераций для разрешения коллизий. |
Contacts Buffer Size | Максимальное количество контактов, обработанных при конфликте. |
Heavy Contacts Count | Максимальное количество контактов, до которого применяется значение Collision Iterations при обработке контактов. Если количество контактов превышает это значение, то используется только одна итерация, чтобы избежать падения производительности. |
Настройки отладки#
Группа Debug Settings содержит настройки для отладочной информации. Чтобы увидеть информацию об отладке, проект должен быть запущен с установленной конфигурацией отладки .
Debug Camera | Включение Debug Camera создает камеру от третьего лица, которая наблюдает за игроком. Эта камера управляется с помощью стрелок курсора и + и - для изменения расстояния до игрока. Включение Use Fixed Angles помещает эту камеру позади игрока и заставляет ее видеть направление игрока. |
---|---|
Debug Visualizer | При включении Debug Visualizer отображается выбранная отладочная информация:
|
Debug Profiler | Включение Debug Profiler отображает выбранную отладочную информацию в профилировщике:
|
Debug Colors | Палитры цветов для установки цветов, которые будут использоваться для отображения информации в Visualizer и Profiler. |
Доступ к исходному коду демо-проекта#
Вы можете изучать и модифицировать исходный код демо-проекта, и создавать свои собственные проекты на его основе. Чтобы получить доступ к исходному коду, сделайте следующее:
- Найдите демо-проект C# Component Samples в разделе Demos и щелкните Install (если вы не установили его ранее).
- После успешной установки демо появится в разделе Installed, и вы сможете скопировать ее как проект, щелкнув Copy as Project.
- В открывшемся окне Create New Project введите имя нового проекта в соответствующее поле и нажмите Create New Project.
- Теперь вы можете щелкнуть Open Code IDE, чтобы проверить и изменить исходный код в IDE по умолчанию, или Open Editor, чтобы открыть проект для работы с контентом в UnigineEditor.
Информация, представленная на данной странице, актуальна для версии UNIGINE 2.20 SDK.