Узнайте, как создавать собственные световые эффекты, чтобы сделать игру ярче.

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

Благодаря мощным функциям Godot, таким как CanvasModulate и PointLight2D, создание и настройка динамического освещения и теней становится простой задачей.

Настройка игры Годо

Прежде чем погрузиться в динамическое освещение, настройте базовую 2D-игру в игровой движок Godot. Создайте новую сцену и добавьте ПерсонажТело2D для игрока.

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

Внутри ПерсонажТело2D, добавить CollisionShape2D прямоугольной формы и Спрайт2D для представления персонажа игрока. Кроме того, создайте несколько платформ, используя StaticBody2D узлы.

Теперь реализуем движение игрока и столкновение с границами экрана с помощью GDScript:

instagram viewer
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)

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

Затемнить остальную часть сцены

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

extends Node2D

const DARKNESS = 0.7

func _ready():
var canvas_modulate = CanvasModulate.new()
canvas_modulate.color = Color(0, 0, 0, DARKNESS)
add_child(canvas_modulate)

Прикрепите этот скрипт к новому Node2D добавлен в корень сцены. CanvasModulate узел применит полупрозрачное черное наложение, затемнив всю сцену, за исключением областей, освещенных источниками света.

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

Отбрасывать легкую тень

Чтобы отбрасывать тени, нужно настроить LightOcluder2D узлы на препятствиях, которые должны блокировать свет. Например, если у вас есть стены, платформы или другие объекты, которые должны отбрасывать тени, добавьте LightOcluder2D каждому.

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

Добавьте всенаправленные огни

Теперь добавьте PointLight2D node с текстурой, представляющей ваш источник света. Точечные светильники излучают свет во всех направлениях и создают реалистичный эффект освещения.

extends PointLight2D

var light_color = Color(1, 1, 0.8)

func _ready():
energy = 2.5
color = light_color

Вы можете настроить свойства для управления диапазоном и цветом света, излучаемого PointLight2D.

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

Чтобы применить текстуру к PointLight2D узел, выполните следующие действия:

  1. Выберите PointLight2D узел в дереве сцены.
  2. На панели «Инспектор» найдите свойство «Текстура» в Текстура раздел.
  3. Нажмите на пустое поле текстуры и выберите нужную световую текстуру в файловом браузере.

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

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

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

Световые анимации

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

Цикл дня и ночи

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

Свет исчезает

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

Динамические тени

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

Звуковые эффекты без авторских прав

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

Лучшие практики для динамического освещения и теней

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

Оптимизируйте источники света

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

Используйте легкую выпечку

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

Выбирайте простые окклюдеры

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

Отбор и наслоение

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

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

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

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

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