Добавете атмосфера и уникална механика на играта с изгрева и залеза на слънцето.
Цикълът ден-нощ може да добави завладяващ елемент към вашите игри, да добави разнообразие към визуализациите и да създаде интересни механики. Игри като Minecraft, Animal Crossing и Don’t Starve използват тази техника ефективно и е такава, която може да обмислите да добавите към собствените си игри, особено тези с елемент в реално време.
За щастие, в Godot 4, постигането на цикъл ден-нощ е по-лесно от всякога.
Настройване на играта Godot
Преди да се потопите в внедряването на цикъл ден-нощ, създайте основата за вашата игра. Започнете със създаване на нов 2D проект в Godot 4. Настройте вашия проект с необходимите настройки на проекта.
Кодът, използван в тази статия, е достъпен в това GitHub хранилище и е безплатен за използване под лиценза на MIT.
Сега създайте герой на играч. Във вашата сцена добавете a CharacterBody2D. Вътре в него добавете a CollisionShape2D с форма на правоъгълник и a Sprite2D. Това ще представи вашия герой визуално.
За да позволите на играча да се движи, можете да използвате следния GDScript код. Прикрепете този скрипт към вашия символен възел:
extends CharacterBody2D
var speed = 300
func _physics_process(delta):
var input_dir = Vector2.ZEROif Input.is_action_pressed("ui_left"):
input_dir.x -= 1if Input.is_action_pressed("ui_right"):
input_dir.x += 1if Input.is_action_pressed("ui_up"):
input_dir.y -= 1if Input.is_action_pressed("ui_down"):
input_dir.y += 1
velocity = input_dir.normalized() * speed
move_and_collide(velocity * delta)
Този код ще позволи на играча да се движи наляво, надясно, нагоре и надолу с помощта на клавишите със стрелки. Можете също добавете някои врагове за вашия играч да избягва. Използвайте Статично тяло2D възли за тези врагове и съответно коригирайте техните форми и позиции.
Добавете таймер за дневния и нощния цикъл
За да създадете цикъл ден-нощ, имате нужда от таймер, който работи непрекъснато, редувайки фазите ден и нощ. Този таймер ще отговаря за проследяването на времето във вашата игра.
Добавете възел Timer към вашата сцена Godot. Можете да направите това, като щракнете с десния бутон върху панела Scene, като изберете Добавете възел, и след това търсене на Таймер в библиотеката на възлите.
Преименувайте възела Timer на нещо смислено като DayNightTimer за яснота. Конфигурирайте свойствата на възела Timer в панела Inspector. По-конкретно, задайте Време за изчакване свойство на 0 (това е първоначалното забавяне преди стартиране на таймера) и проверете Един изстрел свойство, така че таймерът да се повтаря.
Сега добавете GDScript код, който управлява цикъла ден-нощ:
extends Node2D
var day_duration = 30# Duration of the day in seconds
var night_duration = 30# Duration of the night in secondsvar is_day = true
func _ready():
# Start the timer when the scene loads
$DayNightTimer.start()func _on_DayNightTimer_timeout():
if is_day:
# Transition from day to night
$DayNightTimer.start(day_duration)
is_day = false# Add your code here for night-specific actions or visual changes
else:
# Transition from night to day
$DayNightTimer.start(night_duration)
is_day = true
# Add your code here for day-specific actions or visual changes
В _готов функция, стартирайте DayNightTimer когато сцената се зареди, за да стартира цикъла ден-нощ. The _on_DayNightTimer_timeout функцията ще работи всеки път, когато таймерът достигне нула, което е, когато е време за преход между ден и нощ.
Следвайки тези стъпки, ще имате функционален таймер ден-нощ, който превключва между ден и нощ, което ви позволява да добавяте динамични елементи на игра и визуални промени към вашата игра Godot въз основа на времето от деня.
Адаптиране на фона за деня и нощта
За да допълните цикъла ден-нощ, имате нужда от начин за визуално представяне на преходите между деня и нощта. Можете да използвате вграден ColorRect възел за създаване на подходящ фон както за деня, така и за нощта. Този подход позволява по-плавни преходи и по-голям контрол върху визуалните ефекти.
Във вашата сцена с Годо добавете a ColorRect възел. Този възел ще служи като фон, който променя цвета си, за да представи деня и нощта. Преименувайте на ColorRect възел към нещо смислено като BackgroundRect. Позиционирайте го като фонов слой, като се уверите, че покрива целия изглед.
В панела на инспектора задайте Цвят свойството на вашия първоначален фонов цвят, който трябва да представлява деня. Например, можете да използвате Цвят (0,5, 0,5, 0,8) за светлосиньо дневно небе.
Сега актуализирайте своя GDScript код, за да работи с ColorRect възел:
func _on_day_night_timer_timeout():
if is_day:
# Transition from day to night
$DayNightTimer.start(day_duration)
is_day = false# Add your code here for night-specific actions or visual changes
# Update the background color to indicate day
$BackgroundRect.color = Color(0.5, 0.5, 0.8) # Light blue for day
else:
# Transition from night to day
$DayNightTimer.start(night_duration)
is_day = true# Add your code here for day-specific actions or visual changes
# Update the background color to indicate night
$BackgroundRect.color = Color(0, 0, 0) # Black for night
Актуализирайте цвета на BackgroundRect възел за отразяване на времето от деня. Например, задайте го на черно, когато преминавате към нощ, създавайки тъмен фон. Когато преминавате към ден, задайте го на светло синьо.
Звукови ефекти за цикъла ден-нощ
Звуковите ефекти могат да играят решаваща роля за подобряване на потапянето и реализма на вашия цикъл ден-нощ в Godot. Те предоставят слухови знаци на играчите, правейки прехода между деня и нощта по-завладяващ. Можете лесно добавете звукови ефекти към вашата игра Godot.
Преди да започнете, уверете се, че имате аудио ресурси (звукови файлове), които представляват дневни и нощни звуци. Например, може да имате звуци на цвърчене на птици през деня и щурци или крясъци на сови през нощта.
Във вашата сцена с Годо добавете две AudioStreamPlayer2D възли и ги именувайте по подходящ начин. Можете да ги кръстите нещо подобно $DaytimeSounds и $NighttimeSounds.
Сега актуализирайте кода на GDScript, за да управлявате звуковите преходи между ден и нощ:
func _on_day_night_timer_timeout():
if is_day:
# Transition from day to night
$DayNightTimer.start(day_duration)
is_day = false
# Play daytime sounds
$NighttimeSounds.stop() # Stop nighttime sounds
$DaytimeSounds.play() # Start daytime sounds
else:
# Transition from night to day
$DayNightTimer.start(night_duration)
is_day = true
# Play nighttime sounds
$DaytimeSounds.stop() # Stop daytime sounds
$NighttimeSounds.play() # Start nighttime sounds
Когато таймерът ден-нощ изтече, този код проверява към коя фаза трябва да премине и възпроизвежда подходящи звуци, за да съответства.
Чувствайте се свободни да персонализирате своя звукови ефекти без авторски права за да съответства на темата и атмосферата на вашата игра. Можете също така да наслагвате множество аудиозаписи или да използвате аудио ефекти (реверберация, ехо и т.н.), за да създадете по-богато слухово изживяване.
Направете вашите игри Godot по-ангажиращи с цикъл ден-нощ
Внедряването на цикъл ден-нощ във вашата игра Godot може значително да подобри потапянето и ангажираността на играча. Той добавя дълбочина към вашия свят на игри, въвежда динамични елементи на играта и позволява креативно разказване на истории.
Не забравяйте да приспособите цикъла ден-нощ към уникалната тема и механика на вашата игра и не се колебайте да експериментирате с различни визуални и геймплей ефекти, за да създадете наистина завладяваща игра опит.