Добавьте атмосферу и уникальную игровую механику с восходом и закатом солнца.
Цикл смены дня и ночи может добавить элемент погружения в ваши игры, разнообразить визуальные эффекты и создать интересную механику. Такие игры, как Minecraft, Animal Crossing и Don’t Starve, эффективно используют эту технику, и вы можете рассмотреть возможность добавления ее в свои собственные игры, особенно с элементом реального времени.
К счастью, в Godot 4 добиться смены дня и ночи стало проще, чем когда-либо.
Настройка игры «Годо»
Прежде чем приступить к реализации цикла день-ночь, заложите основу для своей игры. Начните с создания нового 2D-проекта в Godot 4. Настройте свой проект с необходимыми настройками проекта.
Код, используемый в этой статье, доступен в этом Репозиторий GitHub и вы можете бесплатно использовать его по лицензии MIT.
Теперь создайте персонажа игрока. В вашей сцене добавьте Тело персонажа2D. Внутри него добавьте СтолкновениеShape2D прямоугольной формы и Спрайт2D. Это визуально представит вашего персонажа.
Чтобы позволить игроку двигаться, вы можете использовать следующий код 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 узлы для этих врагов и соответствующим образом корректируйте их форму и положение.
Добавьте таймер для дневного и ночного цикла
Чтобы создать цикл день-ночь, вам нужен таймер, который работает непрерывно, чередуя дневные и ночные фазы. Этот таймер будет отвечать за отслеживание хода времени в вашей игре.
Добавьте узел «Таймер» в вашу сцену Годо. Вы можете сделать это, щелкнув правой кнопкой мыши на панели «Сцена» и выбрав Добавить узел, а затем ищем Таймер в библиотеке узлов.
Переименуйте узел Таймер во что-нибудь значимое, например ДеньНочьТаймер для ясности. Настройте свойства узла «Таймер» на панели «Инспектор». В частности, установите Время ожидания установите значение 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
в _готовый функцию, запустите ДеньНочьТаймер когда сцена загружается, чтобы запустить цикл день-ночь. _on_DayNightTimer_timeout Функция будет запускаться каждый раз, когда таймер достигнет нуля, то есть, когда придет время перехода между днем и ночью.
Выполнив эти шаги, вы получите функциональный таймер день-ночь, который осуществляет переход между днем и ночью. позволяя вам добавлять динамические элементы игрового процесса и визуальные изменения в вашу игру Godot в зависимости от времени суток.
Адаптация фона для дня и ночи
Чтобы дополнить цикл дня и ночи, вам нужен способ визуально представить переходы между днем и ночью. Вы можете использовать встроенный ЦветРект узел для создания подходящего фона как для дня, так и для ночи. Такой подход обеспечивает более плавные переходы и больший контроль над визуальными эффектами.
В вашей сцене Годо добавьте ЦветРект узел. Этот узел будет служить фоном, который меняет цвет, обозначая день и ночь. Переименуйте ЦветРект узел к чему-то значимому, например ФонРект. Расположите его как фоновый слой, убедившись, что он покрывает всю область просмотра.
На панели «Инспектор» установите Цвет свойству исходного цвета фона, который должен обозначать дневное время. Например, вы можете использовать Цвет (0,5, 0,5, 0,8) для светло-голубого дневного неба.
Теперь обновите код GDScript для работы с ЦветРект узел:
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
Обновите цвет ФонРект узел, отражающий время суток. Например, установите его на черный цвет при переходе на ночь, чтобы создать темный фон. При переходе на день установите светло-синий цвет.
Звуковые эффекты для цикла день-ночь
Звуковые эффекты могут сыграть решающую роль в улучшении погружения и реализма вашего цикла дня и ночи в Godot. Они дают игрокам звуковые сигналы, делая переход между днем и ночью более увлекательным. Вы можете легко добавьте звуковые эффекты в вашу игру Godot.
Прежде чем начать, убедитесь, что у вас есть аудиоресурсы (звуковые файлы), представляющие звуки дня и ночи. Например, днем вы можете слышать щебетание птиц, а ночью — крик сверчков или уханье совы.
В сцене с Годо добавьте два АудиоStreamPlayer2D узлы и назовите их соответствующим образом. Вы можете назвать их примерно так $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 может значительно улучшить погружение и вовлеченность игрока. Он добавляет глубины вашему игровому миру, вводит динамичные элементы игрового процесса и позволяет творчески рассказывать истории.
Не забудьте адаптировать смену дня и ночи к уникальной теме и механике вашей игры, и не сомневайтесь. экспериментировать с различными визуальными и игровыми эффектами, чтобы создать по-настоящему увлекательную игру. опыт.