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

Хорошо продуманная система камер может помочь игрокам погрузиться в игровой мир и дать лучшее ощущение местоположения. Камера действует как глаза игрока, позволяя ему перемещаться и взаимодействовать с игровым миром.

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

Создание простой игры

Перед началом вам необходимо создать 2D игровой мир и персонажа в своем Игровой движок Godot что камера может следить.

Создайте новую 2D-сцену и добавьте ПерсонажТело2D узел. Это будет наш игровой персонаж. Внутри CharacterBody2D добавьте CollisionShape2D и установите его форму на ПрямоугольникФорма2D обеспечить физическое присутствие игрока в мире.

Код, используемый в этой статье, доступен в этом Репозиторий GitHub и вы можете использовать его бесплатно по лицензии MIT.

instagram viewer

Кроме того, внутри CharacterBody2D добавьте Спрайт2D node и назначьте ему изображение спрайта вашего игрока. Создайте новый скрипт, прикрепленный к узлу CharacterBody2D, и добавьте следующий код:

extends CharacterBody2D

var speed = 200

func _physics_process(delta):
var velocity = Vector2()

if Input.is_action_pressed('ui_right'):
velocity.x += 1

if Input.is_action_pressed('ui_left'):
velocity.x -= 1

if Input.is_action_pressed('ui_down'):
velocity.y += 1

if Input.is_action_pressed('ui_up'):
velocity.y -= 1

velocity = velocity.normalized() * speed
move_and_collide(velocity * delta)

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

Внедрение системы слежения за камерой

Следующим шагом будет создание камеры, которая следует за движениями игрока. Добавить Камера2D node как дочерний элемент вашего ПерсонажТело2D узел. Это гарантирует, что камера всегда будет следовать за игроком. Чтобы сделать движение более плавным, включите свойство сглаживания положения Камера2D узел.

$Camera2D.enabled = true
$Camera2D.position_smoothing_enabled = true

Внедрение границ и ограничений камеры

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

Godot предоставляет простой способ установить пределы камеры и ограничить ее движения в пределах игровой зоны.

в Камера2D свойства узла, есть четыре переменные: limit_left, limit_top, limit_right, и limit_bottom. Они определяют границы камеры. Вы можете установить эти значения в соответствии с размером вашего игрового мира.

$Camera2D.limit_left = 0
$Camera2D.limit_top = 0
$Camera2D.limit_right = your_game_area_width
$Camera2D.limit_bottom = your_game_area_height

Заменять your_game_area_width и your_game_area_height с шириной и высотой вашего игрового мира. Этот скрипт эффективно ограничивает камеру в нужной области, обеспечивая игроку чистый и сфокусированный игровой процесс.

Управление масштабированием и масштабированием камеры

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

Кредит изображения: Xbox Game Studios/orithegame.com

Godot упрощает масштабирование и масштабирование с помощью зум собственность Камера2D узел. Это свойство представляет собой Vector2, где (1, 1) является уровнем масштабирования по умолчанию. Более высокие значения будут уменьшать масштаб, делая просматриваемые объекты меньше, в то время как более низкие значения будут увеличивать масштаб, делая объекты больше.

Для увеличения можно использовать:

$Camera2D.zoom = Vector2(0.7, 0.7)

И чтобы сбросить масштаб, используйте:

$Camera2D.zoom = Vector2(1, 1)

Значения, которые вы передаете в Vector2(), определяют уровень масштабирования по осям X и Y. Значение масштабирования (0,7, 0,7) означает, что камера будет увеличиваться, а значение (1,5, 1,5) будет уменьшать масштаб.

Обычно следует сохранять одно и то же значение для обеих осей, чтобы сохранить соотношение сторон, но вы можете поэкспериментировать с разными значениями для достижения уникальных эффектов.

Включая дополнительные функции

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

дрожание камеры

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

Вы можете легко добавить эту функцию в Godot, создав встряхнуть () функция. Вы можете указать продолжительность и интенсивность эффекта дрожания в соответствии с конкретным внутриигровым событием.

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

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

Динамическое освещение

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

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

Эффекты перехода камеры

Вы можете создавать различные эффекты перехода при переключении между камерами. Это может быть простой монтаж, когда вид мгновенно переходит с одной камеры на другую, или затухание, когда вид постепенно переходит с одной камеры на другую.

Вы можете использовать более сложные переходы, такие как вытеснение, слайд или диафрагма, с дополнительным кодированием и анимацией.

Рекомендации по добавлению системы камер

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

Избегайте резких движений камеры

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

Ограничение дрожания камеры

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

Протестируйте различные уровни масштабирования

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

Тщательно продумайте границы камеры

Границы камеры должны быть продуманно установлены, чтобы соответствовать дизайну ваших уровней. Вы же не хотите, чтобы игрок видел что-то за пределами игрового мира или пропускал важные элементы за кадром.

Приоритет опыта игрока

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

Делаем игры Godot более увлекательными с помощью системы камер

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

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