Научете как да направите свои собствени светлинни ефекти, за да озарите игрите си.
Динамичното осветление и сенки могат да подобрят визуалното качество и игровото изживяване на вашите Godot игри. Те добавят дълбочина, атмосфера и реализъм, правейки вашия свят на играта по-завладяващ и ангажиращ.
С мощните функции на Godot като CanvasModulate и PointLight2D, създаването и персонализирането на динамично осветление и сенки е лесна задача.
Настройване на играта Godot
Преди да се потопите в динамичното осветление, настройте основна 2D игра игровият двигател Godot. Създайте нова сцена и добавете a CharacterBody2D за играча.
Кодът, използван в тази статия, е достъпен в това GitHub хранилище и е безплатен за използване под лиценза на MIT.
Вътре в CharacterBody2D, добави CollisionShape2D с правоъгълна форма и a Sprite2D за представяне на характера на играча. Също така създайте някои платформи, като използвате Статично тяло2D възли.
Сега приложете движението и сблъсъка на играча с границите на екрана с помощта на GDScript:
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
var velocity = Vector2()if Input.is_action_pressed('ui_right'):
velocity.x += 1if Input.is_action_pressed('ui_left'):
velocity.x -= 1if Input.is_action_pressed('ui_down'):
velocity.y += 1if Input.is_action_pressed('ui_up'):
velocity.y -= 1
velocity = velocity.normalized() * speed
move_and_collide(velocity * delta)
С този код играчът може да се движи наляво, надясно, нагоре и надолу, докато е ограничен в границите на екрана.
Затъмнете останалата част от сцената
За да постигнете ефекта на динамично осветление, трябва да затъмните останалата част от сцената, с изключение на зоните, осветени от източниците на светлина. Можете да направите това с Godot’s 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 добавен в основата на сцената. The CanvasModulate възел ще приложи полупрозрачно черно наслагване, затъмнявайки цялата сцена с изключение на областите, осветени от светлини.
Създайте постоянна променлива ТЪМНИНА, което определя интензитета на тъмнината, приложена към сцената. Чрез коригиране на стойността на ТЪМНИНА, можете да контролирате колко тъмна става сцената, когато не е осветена от светлини. По-висока стойност ще доведе до по-тъмна сцена, докато по-ниска стойност ще направи сцената по-малко тъмна.
Хвърли светла сянка
За да хвърляте сенки, трябва да настроите LightOccluder2D възли върху препятствия, които трябва да блокират светлината. Например, ако имате стени, платформи или други обекти, които трябва да хвърлят сенки, добавете a LightOccluder2D на всеки един.
Създайте нов LightOccluder2D възел и коригирайте формата му, за да съответства на формата на препятствието във вашата игра. Можете също да регулирате свойствата на оклудера като полигони и сегменти за фина настройка на поведението при хвърляне на сянка.
Добавете многопосочни светлини
Сега добавете a PointLight2D възел с текстура, която да представя вашия източник на светлина. Точковите светлини излъчват светлина във всички посоки и създават реалистичен светлинен ефект.
extends PointLight2D
var light_color = Color(1, 1, 0.8)
func _ready():
energy = 2.5
color = light_color
Можете да персонализирате свойствата, за да контролирате обхвата и цвета на светлината, излъчвана от PointLight2D.
Можете също да създадете или импортирате персонализирана светлинна текстура, за да определите формата и външния вид на вашия източник на светлина. Може да бъде обикновен кръг или по-сложна форма, в зависимост от атмосферата, която искате да създадете.
За да приложите текстурата към PointLight2D възел, изпълнете следните стъпки:
- Изберете PointLight2D възел в дървото на сцената.
- В панела на инспектора намерете свойството Texture под Текстура раздел.
- Кликнете върху празното поле за текстура и изберете желаната светла текстура от файловия браузър.
Сега вашият източник на светлина ще излъчва светлина с дефинирана форма и цвят, добавяйки визуално привлекателен щрих към вашето динамично осветление и сенки.
Включително допълнителни функции
В допълнение към основната настройка на динамично осветление и сенки, можете да въведете различни допълнителни функции, за да издигнете още повече визуалната привлекателност и геймплея. Ето някои идеи, които да обмислите:
Леки анимации
Вдъхнете живот на източниците на светлина, като добавите анимации към тях. Например, можете да създадете мигащи светлини за факли или свещи, да симулирате движение на лагерен огън или дори да добавите пулсиращ ефект към магически кълба.
Цикъл ден-нощ
Приложете динамичен цикъл ден-нощ, който постепенно променя интензитета и цвета на светлините с напредването на времето в играта. Тази функция може да подобри потапянето и да създаде различни настроения в зависимост от времето на деня.
Избледняване на светлината
Създайте плавни преходи за промени в интензитета на светлината, за да избегнете резки промени, които могат да нарушат потапянето. Чрез постепенно избледняване на светлините навътре и навън можете да постигнете по-естествен и визуално приятен ефект.
Динамични сенки
Вместо да използвате статични сенки, помислете за добавяне на динамични сенки към движещи се обекти или герои. Можете да направите това, като използвате допълнителни източници на светлина, които следват движението на героите, създавайки илюзията за актуализации на сенките в реално време.
Звукови ефекти без авторски права
Звуковите ефекти играят решаваща роля, за да направят вашия свят на играта жив и динамичен. Помислете за включване звукови ефекти без авторски права за да допълни вашето динамично осветление и сенки.
Най-добри практики за динамично осветление и сенки
Докато динамичното осветление и сенки могат значително да подобрят играта ви, неправилното внедряване може да повлияе отрицателно на производителността и визуалното качество. Ето някои най-добри практики, които трябва да имате предвид:
Оптимизиране на източници на светлина
Ограничете броя на активните източници на светлина до необходимия минимум за желания визуален ефект. Прекомерното осветление може значително да повлияе на производителността, особено на устройства от по-нисък клас.
Използвайте леко печене
За статични сцени или обекти помислете за изпичане на информацията за осветлението, за да подобрите производителността. Light baking изчислява предварително данните за осветлението, като намалява необходимостта от изчисления в реално време по време на игра.
Изберете прости оклудери
При настройка LightOccluder2D възли, изберете прости форми, където е възможно. Сложните оклудери с много върхове могат да доведат до проблеми с производителността. Използвайте прости полигони или линейни сегменти за оклудери, когато е възможно.
Бране и напластяване
Използвайте системата за видимост и наслояване на Godot, за да сте сигурни, че светлините и сенките се изчисляват само за видими области. Отстраняването на светлини и сенки извън екрана може значително да подобри производителността.
Като следвате тези най-добри практики и внимателно прилагате допълнителни функции, можете да създадете зашеметяващо и завладяващо динамично осветление и сенки, които повишават цялостното качество на вашата игра на платформинг.
Правене на Godot Games по-ангажиращи с динамично осветление и сенки
Динамичното осветление и сенки вдъхват живот на вашия свят на игри. Те създават по-завладяваща и атмосферна среда, въвличайки играчите по-дълбоко в геймплея. Взаимодействието на светлина и сянка може да предизвика емоции, да зададе тона и да подобри визуалното разказване на вашата игра.
Независимо дали е мистериозно тъмно подземие или спокойна лунна нощ, динамичното осветление обогатява геймплея и оставя трайно впечатление на играчите.