Камера

Представьте, что вы создаете игру, в которой герой ходит по узким дорожкам и должен стараться не упасть с них. Игрок управляется тремя клавишами: стрелка влево поворачивает его налево, стрелка вправо – направо, стрелка вперед – заставляет двигаться вперед вдоль одной из его локальных осей. Самому объекту-герою назначен тип физики Character на вкладке Physics редактора свойств.

Пример игры

Логика игры

Проблема в том, что чем дальше уходит герой от камеры, тем труднее становится им управлять. Когда он находится на заднем плане, трудно оценить, правильно ли он повернут.

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

Связь родитель-потомок

В Blender связь родитель-потомок используется не только в игровом движке, также при моделировании трехмерных объектов. При установлении такой связи изменения объекта-родителя отражаются на объектах, указанных в качестве дочерних, но не наоборот, т. е. изменения потомка не касаются предка.

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

Связь устанавливается так:

  1. Выделяется потомок (в данном случае, камера).

  2. С зажатой клавишей Shift выделяется предок (в данном случае, шар). Запомните: предок всегда выделяется последним, т. к. у одного родителя может быть несколько потомков.

  3. Для установки связи родитель-потомок следует нажать комбинацию клавиш Ctrl+P и в появившемся меню выбрать Object.

  4. Если в дальнейшем потребуется снять связь, то следует выделить оба объекта и нажать Alt+P.

Запустив режим игры, мы можем столкнуться с другой проблемой. Поскольку шар не только двигается, но и поворачивается, следом за ним будет поворачиваться и камера. Это не всегда удобно. Чтобы камера не вертелась, ее можно привязать не к целому объекту, а к любой его вершине. Вершина – это точка. Точки не вертятся. Тогда последовательность действий будет такой:

  1. Выделить камеру.

  2. Выделить шар-родитель (с зажатым Shift).

  3. Переключиться в режим редактирования.

  4. Выделить любую вершину шара.

  5. Нажать Ctrl+P и подтвердить создание вершины-родителя.

  6. Выйти из режима редактирования.

Активатор Camera

Активатор Camera обеспечивает более плавное слежение за объектом, чем связь родитель-потомок. При резких движениях объекта камера двигается более мягко; если объект неподвижен, камера все равно продолжает немного двигаться, как бы наезжая на объект по оси X или Y.

Привязка камеры к объекту

Активатор Camera здесь устанавливается для камеры, в поле Camera Object указывается имя того объекта, за которым производится слежка.

Через поля Height, Min и Max настраиваются высота камеры над объектом, минимальное и максимальное расстояния от камеры до объекта. Большее значение Damping (амортизация) не позволяет камере сильно наезжать на объект, как бы гасит ее колебания в пределах min и max.

Какие бы настройки вы не делали в активаторе Camera, объект слежения всегда будет находиться в центре игровой сцены. Если требуется иное, например, чтобы объект был у нижней кромки, то камеру можно привязать к пустышке, а пустышку сделать родителем героя. Движение скорее придется настраивать для пустышки, также потребуется правильно подобрать "физические" типы.

Слежение за несколькими объектами

Бывает, что в игре сначала необходимо следить за одним объектом, а затем за другим. Чтобы реализовать такую возможность, можно создать для камеры несколько логических связок. Каждый активатор Camera может приводиться в действие нажатием клавиши или щелчком мыши по конкретному объекту. Тогда в режиме игры можно будет переключать вид с одного объекта на другой.

Переключение камеры с одного объекта на другой

Использование нескольких камер

Когда требуется просто обозревать сцену с разных точек, то можно установить несколько камер и настроить возможность переключения между ними в режиме игры. Для установки вида из конкретной камеры используется режим Set Camera активатора Scene.

Переключение на другую камеру

Если связка логических блоков устанавливается для самой камеры, на которую выполняется переключение, то поле Camera Object оставляют пустым.

Практическая работа

В уроке был приведен пример, в котором перед героем типа Character стояла задача не упасть с узкой платформы. Создайте аналогичную игру, однако ваш шар должен иметь тип Rigid Body. С помощью стрелок клавиатуры к нему прикладываются силы, заставляющие его катиться соответственно вперед, назад, влево и вправо вдоль глобальных осей. Камера должна следить за шаром.

Пример игры с Rigid Body

Создано

Обновлено