Skip to content

Unity не предоставляет удобного управления камерой, поэтому многие разработчики реализуют управление камерой сами исходя из своих потребностей. Зачастую это не тривиально, и компоненты камеры сильно перегружены и/или заточены под определенную специфику. Поэтому требуется реализация самого простейшего управления, т.н. камеры сверху, которая позволяет пролететь над террайном на определенном уровне над ним. Также камера должна иметь функцию поворота обзора и приближения/отдаления от поверхности. А так же контроль движения в определенной области. Эту функциональность выполняет комбинация двух скриптов FastController и TopCamera. Уже настроенный префаб TopCamera включен в пакет этого компонента, его нужно лишь добавить на сцену.

Управление клавишами обеспечивается принимая ввод пользователя через UnityEngine.InputSystem. Используется:

  1. WASD - направляет камеру в соответствующую сторону (обрабатывает FastController)

  2. Right Button Mouse - при нажатии поворачивает камеру (обрабатывает TopCamera)

  3. Scroll Mouse - приближает/отдаляяет камеру (обрабатывает FastController)

Компонент реализует простой контроль столкновения камеры с препятствием. Обрабатываются только простые случаи и это может быть недостаточно, чтобы гарантировать что камера не войдет в текстуры препятствия. В OnDrawGizmos показывается 4 точки, которые создают плоскости и пересечение с которыми котролируется 4-мя рейкастами. Этот метод хорошо работает с BoxCollider, но с другими препятствиями могут быть траблы.

Свойства

Vector2 Sensitivity

Чувствительность/скорость вращения камеры.

Vector2 Limit

Ограничение поворота камеры по двум осям

Vector3 CameraShift

Сдвиг камеры. При нулевом камера вращается вокруг центра, а при сдвиге вокруг точки смещенной на этот сдвиг относительно центра. Можно использовать для иммитации камеры от третьего лица, камера будет вращаться на определенном расстоянии вокруг персонажа.

Методы

Управление камерой выполняется автоматически, методы вызываются каждый кадр через LateUpdate().