Дизайн камеры от третьего лица с зоной свободного движения
Введение
Дизайн камеры, о котором пойдёт речь, ориентирован на инициируемое управление, которое требует быстрого отклика активной умной камеры, старающейся следовать за вами наилучшим образом.
Для игр с упором на стрельбу такая камера вряд ли будет самой удачной, она скорее подойдёт для платформеров и игр про исследование мира.
Как и в классических дизайнерских документах, принятых в индустрии, я выделил параметры, требующиеся дизайнеру для настройки камеры. Конечно, даже если это и очевидно, хорошая камера – это хорошая механика, но и её правильная настройка с учётом ваших потребностей играет не последнюю роль.
Отдавая должное, нужно отметить, что данный дизайн частично основан на нескольких существующих системах из игр серии Assassin’s Creed, Lego City Undercover и серии Infamous.
Базовые установки
Базовые установки – это положение камеры «по умолчанию», когда игрок не управляет камерой и она работает в «стандартном» режиме следования.
Параметры:
- Высота от земли (единицы)
- Расстояние до персонажа (единицы)
- Вертикальный наклон (единицы)
- Горизонтальный угол обзора (градусы)
- Горизонтальное смещение (единицы)
Под единицами понимаются единицы расстояния, используемые в проекте (чаще всего метры).
Зона свободного движения
Это зона, в которой игрок может двигаться без какой-либо реакции камеры. Таким образом, игрок чувствует себя свободнее и картинка становится более «кинематографичной».
В данном случае она представлена в виде цилиндра.
Этот цилиндр – нечто вроде «ребёнка» камеры, «пристёгнутого» к ней (то есть, всегда расположенного по центру экрана), только он постоянно остаётся вертикальным по отношению к игровому миру (иными словами, камера вращается по вертикали вокруг точки, расположенной в центре цилиндра).
Параметры:
- Высота от земли (единицы)
- Расстояние до персонажа (единицы)
- Вертикальный наклон (единицы)
Управление свободной камерой
С помощью мыши или стика на геймпаде игрок может вращать камеру в двух плоскостях вокруг персонажа, всегда глядя на него.
Для этого движения камеры используются особые значения ускорения/максимальной скорости.
Движение камеры по вертикали ограничено определённым углом.
Параметры:
- Радиус свободного движения (единицы)
- Предел свободного движения вверх (градусы)
- Предел свободного движения вниз (градусы)
Следование
Базовое поведение следования довольно простое – когда персонаж выходит за пределы зоны свободного движения, камера занимает такую позицию, при которой он возвращается в эту зону.
На выбор новой позиции влияют дополнительные правила/ограничения в зависимости от направления следования (вертикального/горизонтального) и использования игроком свободной камеры.
Параметры:
- Инерция плавности следования (коэффициент)
- Горизонтальный угол возврата в стандартный режим (градусы)
- Максимальный угол вертикального наклона (градусы)
Да, первый параметр не совсем понятный. Причина в том, что вычисления, стоящие за поведением следования всегда довольно сложны, если вы хотите добиться ощущения плавности/упругости (что настоятельно рекомендуется для современных игр). Итак, я считаю, что дизайнеру лучше всего настраивать это с помощью одного единственного значения «инерции»: при низких значениях камера реагирует резко, при высоких плавно.
Горизонтальное следование
Стандартный режим
В стандартном режиме для сохранения персонажа в пределах цилиндра камера только смещается вперёд/назад и вращается по горизонтали.
Свободный режим
Как только игрок двигает камеру правым стиком, она переходит в свободный режим.
- Для сохранения персонажа в цилиндре камера использует только смещение.
- Если игрок с помощью горизонтального вращения выходит за пределы определённого угла и больше не пользуется управлением свободной камерой, она возвращается в стандартный режим и принимает положение согласно базовым установкам.
Вертикальное следование
Стандартный режим
При вертикальном следовании камера работает как прицеп.
Под этим понимается вертикальное вращение вокруг точки в центре цилиндра и смещение вверх-вниз.
У вращения имеется предельный угол, достигнув которого, камера использует только смещение.
Когда персонаж снова оказывается на земле, камера принимает положение согласно базовым установкам (если не находится в свободном режиме).
Свободный режим
Если игрок дотрагивается до правого стика в воздухе, камера переходит в свободный режим:
- Камера использует только смещение для сохранения персонажа в цилиндре.
- Если игрок нарушает вертикальную границу цилиндра и больше не пользуется управлением свободной камерой, она переходит в стандартный режим и принимает положение согласно базовым установкам.
При вертикальном следовании возвращаться в стандартный режим проще, поскольку при падении вы чаще всего хотите видеть, куда падаете, чего и добивается стандартная камера. Если приходится долго падать и при этом стрелять, понадобится больше контроля перед возвращением в стандартный режим, например, можно установить таймер, отмеряющий время от последнего управления свободной камерой.
Скорость и отдалённость камеры
Параметры:
- Минимальная скорость для начала увеличения дистанции (единицы в секунду)
- Максимальная скорость для прекращения увеличения дистанции (единицы в секунду)
- Максимальное расстояние от персонажа (единицы)
Здесь поведение камеры определяется максимальной скоростью и расстоянием. Когда персонаж достигает определённой скорости движения, камера начинает отдаляться, чтобы улучшить обзор игрока.
Преграды/столкновения
Параметр:
- Минимальное расстояние от зоны свободного движения (единицы)
Граница камеры (сфера вокруг неё) не может сталкиваться с цилиндром или двигаться вплотную к нему. Это правило приоритетнее всех остальных.
Камера не должна нарушать пределы минимального расстояния, особенно когда зона свободного движения скользит по земле/крыше вместе с игроком.
Если персонаж расположен за препятствием, камера проверяет его видимость, предпринимая действия в следующем порядке:
- Вращение в «сфере свободной камеры» с приоритетом горизонтального вращения.
- Приближение с учётом минимальной дистанции.
- Приближение с учётом минимальной дистанции и вращение.
- Приближение без учёта минимальной дистанции (должно применяться в качестве крайней меры и в очень редких случаях).