RTS на Unity: Создание камеры с плавным зумом

Объявление переменных

Для начала необходимо объявить переменные, отвечающие за скорость зума, позицию камеры над поверхностью и другие параметры:

  • CameraPosition: Расстояние от точки под камерой до самой камеры. Обеспечивает плавный переход камеры над неровной поверхностью. Например, значение 80 означает, что камера всегда будет находиться на высоте 80 единиц от поверхности.
  • CamZoomMax и CamZoomMin: Максимальное и минимальное значения зума камеры.
  • CamSpeed: Скорость перемещения камеры.
  • hit: Переменная для хранения информации об объекте, с которым столкнулась камера (подробнее — ниже).

Метод CameraHeightPosition

Метод корректирует высоту камеры в зависимости от рельефа местности.

Создаётся переменная direction типа Vector3, хранящая направление от камеры до проверяемой точки. Затем, используя Physics.Raycast, проверяется расстояние до ближайшего объекта (например, игрового юнита или элемента ландшафта).

Если расстояние меньше CameraPosition, камера столкнулась с возвышенностью. Разность между CameraPosition и расстоянием до объекта используется для корректировки высоты камеры — камера поднимается на высоту возвышенности.

Аналогично, если расстояние больше CameraPosition, камера опускается, имитируя движение над впадиной.

Метод CameraMovePosition

Метод отвечает за горизонтальное перемещение камеры.

Он проверяет положение курсора мыши относительно краёв экрана. Если курсор находится близко к краю, камера перемещается в соответствующем направлении. Скорость перемещения регулируется переменной CamSpeed.

Например, если положение мыши по оси X меньше 20 пикселей от левого края экрана, камера перемещается влево. Если положение мыши по оси X больше ширины экрана минус 20 пикселей, камера перемещается вправо. Аналогичная логика применяется для оси Y.

Управление зумом

Метод обрабатывает вращение колеса мыши для изменения масштаба. При вращении проверяются значения CamZoomMax и CamZoomMin, чтобы предотвратить выход за пределы допустимого диапазона. Скорость изменения зума регулируется, создавая эффект плавного приближения и отдаления.

В этом уроке рассмотрен скрипт управления камерой в RTS игре на Unity3D. Реализованы функции плавного перемещения камеры над неровной поверхностью, горизонтального перемещения мышью и зума колесом мыши. В следующем уроке будет рассмотрен класс MAState.

Что будем искать? Например,программа