Adicione atmosfera e mecânica de jogo única com o nascer e o pôr do sol.

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 forma 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.

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 PersonagemBody2D. Dentro dele, adicione um ColisãoForma2D com formato retangular e Sprite2D. Isso representará seu personagem visualmente.

instagram viewer

Para permitir que o jogador se mova, você pode usar o seguinte código GDScript. Anexe este script ao nó do seu personagem:

extends CharacterBody2D

var speed = 300

func _physics_process(delta):
var input_dir = Vector2.ZERO

if Input.is_action_pressed("ui_left"):
input_dir.x -= 1

if Input.is_action_pressed("ui_right"):
input_dir.x += 1

if Input.is_action_pressed("ui_up"):
input_dir.y -= 1

if Input.is_action_pressed("ui_down"):
input_dir.y += 1

velocity = 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 adicione alguns inimigos para o seu jogador se esquivar. Usar Corpo Estático2D nós 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, em seguida, procurando por Cronômetro na biblioteca do nó.

Renomeie o nó Timer para algo significativo como Temporizador diurno e noturno para maior clareza. Configure as propriedades do nó Timer no painel Inspetor. Especificamente, defina o Tempo de espera propriedade para 0 (este é o atraso inicial antes do início do temporizador) e verifique o Um disparo propriedade para que o cronômetro se repita.

Agora, adicione um código GDScript que gerencie o ciclo dia-noite:

extends Node2D

var day_duration = 30# Duration of the day in seconds
var night_duration = 30# Duration of the night in seconds

var 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

No _preparar função, inicie o Temporizador diurno e noturno quando a cena carrega para iniciar o ciclo dia-noite. O _on_DayNightTimer_timeout A função 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 alterna entre dia e noite, permitindo que você adicione elementos de jogo dinâmicos e mudanças 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 integrado ColorRect nó para criar um plano de fundo adequado para dia e noite. Essa abordagem permite transições mais suaves e maior controle sobre o visual.

Na sua cena Godot, adicione um ColorRect nó. Este nó servirá como plano de fundo que muda de cor para representar o dia e a noite. Renomeie o ColorRect nó para algo significativo como FundoRect. Posicione-a como camada de fundo, garantindo que ela cubra toda a viewport.

No painel Inspetor, defina o Cor propriedade à sua cor de fundo inicial, que deve representar o dia. Por exemplo, você pode usar Cor (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 ColorRect nó:

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

Atualize a cor do FundoRect nó 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 adicione 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 AudioStreamPlayer2D nós e nomeá-los apropriadamente. Você pode nomeá-los com algo como $ sons diurnos e $ sons noturnos.

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:
# 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

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 seu 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 experimentar diferentes efeitos visuais e de jogo para criar um jogo verdadeiramente cativante experiência.