Um ciclo dia-noite pode adicionar um elemento envolvente aos seus jogos, adicionar variedade aos visuais e criar mecânicas interessantes. Jogos como Minecraft, Animal Crossing e Don’t Starve usam essa técnica de maneira eficaz, e você pode considerar adicioná-la aos seus próprios jogos, especialmente aqueles com um elemento em tempo real.
Felizmente, em Godot 4, alcançar um ciclo dia-noite é mais fácil do que nunca.
últimas postagens
Configurando o jogo Godot
Antes de mergulhar na implementação do ciclo dia-noite, estabeleça a base para o seu jogo. Comece criando um novo projeto 2D no Godot 4. Configure seu projeto com as configurações de projeto necessárias.
O código usado neste artigo está disponível neste Repositório GitHub e é gratuito para você usar sob a licença do MIT.
Agora, crie um personagem de jogador. Na sua cena, adicione um CharacterBody2D. Dentro dele, adicione um CollisionShape2D com formato retangular e um Sprite2D. Isso representará seu personagem visualmente.
Para permitir que o jogador se mova, você pode usar o seguinte código GDScript. Anexe este script ao nó do seu personagem:
extends CharacterBody2Dvar 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 += 1velocity = input_dir.normalized() * speed
move_and_collide(velocity * delta)
Este código permitirá ao jogador mover-se para a esquerda, direita, para cima e para baixo usando as teclas de seta. Você também pode adicionar alguns inimigos para o seu jogador se esquivar. Use nós StaticBody2D para esses inimigos e ajuste suas formas e posições de acordo.
Adicione um cronômetro para o ciclo diurno e noturno
Para criar um ciclo dia-noite, você precisa de um cronômetro que funcione continuamente, alternando entre as fases diurna e noturna. Este cronômetro será responsável por monitorar a passagem do tempo no seu jogo.
Adicione um nó Timer à sua cena Godot. Você pode fazer isso clicando com o botão direito no painel Cena, escolhendo Adicionar nó e pesquisando por Temporizador na biblioteca de nós.
Renomeie o nó Timer para algo significativo como DayNightTimer para maior clareza. Configure as propriedades do nó Timer no painel Inspetor. Especificamente, defina a propriedade Wait Time como 0 (este é o atraso inicial antes do início do cronômetro) e verifique a propriedade One Shot para que o cronômetro se repita.
Agora, adicione um código GDScript que gerencie o ciclo dia-noite:
extends Node2Dvar day_duration = 30
var night_duration = 30var is_day = true
func _ready():
$DayNightTimer.start()func _on_DayNightTimer_timeout():
if is_day:
$DayNightTimer.start(day_duration)
is_day = false
else:
$DayNightTimer.start(night_duration)
is_day = true
Na função _ready, inicie o DayNightTimer quando a cena for carregada para iniciar o ciclo dia-noite. A função _on_DayNightTimer_timeout será executada sempre que o cronômetro chegar a zero, que é quando é hora de fazer a transição entre o dia e a noite.
Seguindo essas etapas, você terá um cronômetro diurno e noturno funcional que transita entre o dia e a noite, permitindo adicionar elementos de jogo dinâmicos e alterações visuais ao seu jogo Godot com base na hora do dia.
Adaptando o plano de fundo para o dia e a noite
Para complementar seu ciclo dia-noite, você precisa de uma forma de representar visualmente as transições entre o dia e a noite. Você pode usar um nó ColorRect integrado para criar um plano de fundo adequado para o dia e para a noite. Essa abordagem permite transições mais suaves e maior controle sobre o visual.
Na sua cena Godot, adicione um nó ColorRect. Este nó servirá como plano de fundo que muda de cor para representar o dia e a noite. Renomeie o nó ColorRect para algo significativo como BackgroundRect. Posicione-a como camada de fundo, garantindo que ela cubra toda a viewport.
No painel Inspetor, defina a propriedade Color com a cor de fundo inicial, que deve representar o dia. Por exemplo, você pode usar Color(0.5, 0.5, 0.8) para um céu azul claro durante o dia.
Agora, atualize seu código GDScript para funcionar com o nó ColorRect:
func _on_day_night_timer_timeout():
if is_day:
$DayNightTimer.start(day_duration)
is_day = false
$BackgroundRect.color = Color(0.5, 0.5, 0.8)
else:
$DayNightTimer.start(night_duration)
is_day = true
$BackgroundRect.color = Color(0, 0, 0)
Atualize a cor do nó BackgroundRect para refletir a hora do dia. Por exemplo, defina-o para preto ao fazer a transição para a noite, criando um fundo escuro. Ao fazer a transição para o dia, defina-o para azul claro.
Efeitos Sonoros para o Ciclo Dia-Noite
Os efeitos sonoros podem desempenhar um papel crucial no aumento da imersão e do realismo do seu ciclo diurno e noturno em Godot. Eles fornecem pistas auditivas aos jogadores, tornando a transição entre o dia e a noite mais cativante. Você pode facilmente adicionar efeitos sonoros ao seu jogo Godot.
Antes de começar, certifique-se de ter recursos de áudio (arquivos de som) que representem sons diurnos e noturnos. Por exemplo, você pode ouvir sons de pássaros cantando durante o dia e grilos ou pios de coruja durante a noite.
Na sua cena Godot, adicione dois nós AudioStreamPlayer2D e nomeie-os apropriadamente. Você pode nomeá-los como $DaytimeSounds e $NighttimeSounds.
Agora, atualize o código GDScript para gerenciar as transições sonoras entre o dia e a noite:
func _on_day_night_timer_timeout():
if is_day:
$DayNightTimer.start(day_duration)
is_day = false
$NighttimeSounds.stop()
$DaytimeSounds.play()
else:
$DayNightTimer.start(night_duration)
is_day = true
$DaytimeSounds.stop()
$NighttimeSounds.play()
Quando o cronômetro diurno e noturno expira, esse código verifica para qual fase ele deve fazer a transição e reproduz os sons apropriados para corresponder.
Sinta-se à vontade para personalizar seus efeitos sonoros sem direitos autorais para combinar com o tema e a atmosfera do seu jogo. Você também pode sobrepor várias trilhas de áudio ou usar efeitos de áudio (reverberação, eco, etc.) para criar uma experiência auditiva mais rica.
Torne seus jogos Godot mais envolventes com um ciclo diurno e noturno
Implementar um ciclo dia-noite em seu jogo Godot pode aumentar significativamente a imersão e o envolvimento do jogador. Ele adiciona profundidade ao mundo do jogo, introduz elementos de jogo dinâmicos e permite uma narrativa criativa.
Lembre-se de adaptar o ciclo dia-noite ao tema e à mecânica exclusivos do seu jogo e não hesite em experimentar diferentes efeitos visuais e de jogo para criar uma experiência de jogo verdadeiramente cativante.