Contents

Como implementar um ciclo dia-noite no Godot

Um ciclo dia-noite pode adicionar um elemento imersivo 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 é uma técnica que você pode considerar adicionar aos seus próprios jogos, particularmente aqueles com um elemento em tempo real.

De facto, o processo de incorporação de um ciclo dia-noite no Godot 4 foi simplificado e simplificado a um nível sem precedentes.

Configurando o jogo Godot

Para iniciar o desenvolvimento do ciclo dia-noite no contexto do nosso jogo, é prudente que primeiro estabeleçamos uma base sólida sobre a qual construir. Isto pode ser conseguido iniciando um novo projeto bidimensional no âmbito do Godot e assegurando que todos os parâmetros relevantes do projeto estão devidamente configurados.

O código utilizado nesta publicação pode ser acedido através de um repositório GitHub, que funciona como uma plataforma de código aberto para partilha e colaboração. Este repositório aloja o código e concede permissão aos utilizadores para o utilizarem gratuitamente, sujeito aos termos da licença MIT.

Ao criar uma cena de jogo em Unity, é necessário primeiro estabelecer um objeto Player Character instanciando um

Para que o jogador navegue pelo ambiente de jogo, é necessário incorporar um conjunto específico de instruções de programação conhecido como GDScript no objeto de personagem designado. Este processo envolve a aplicação do trecho de código fornecido ao nó associado à personagem, activando assim as suas capacidades de movimento.

 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)

O código fornecido permite ao utilizador navegar numa personagem utilizando as teclas de setas. Além disso, é possível incorporar adversários dos quais o protagonista deve escapar. Para tal, podemos utilizar nós Utilize StaticBody2D como adversários, e manipular a sua forma e colocação conforme necessário.

/pt/images/player-movement-in-godot-2d.jpg

Adicionar um temporizador para o ciclo de dia e noite

Para implementar um ciclo de dia e noite num videojogo, é necessário incorporar um temporizador contínuo que alterne entre as fases de dia e noite, servindo como indicador do tempo decorrido ao longo da experiência de jogo.

inicie o menu de contexto no painel Cena com o botão direito do rato; na lista de opções disponíveis que aparece ao selecionar “Adicionar nó”, seleccione o nó de temporizador específico encontrado nos resultados de pesquisa da biblioteca de nós.

Modificar a designação do nó Temporizador para uma etiqueta mais descritiva, como “DayNightTimer”, para melhorar a sua legibilidade.Em seguida, configure os atributos do nó Temporizador, examinando as suas propriedades no painel Inspetor. Em particular, ajuste o atributo “Tempo de espera” para zero segundos, que representa a pausa preliminar antes do início do temporizador, e certifique-se de que a funcionalidade “Um disparo” está activada, fazendo com que o temporizador se repita continuamente.

Incorporar uma implementação GDScript para lidar com o ciclo dia-noite, incorporando a lógica e os cálculos apropriados no script.

 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 

Na função ready , inicie o DayNightTimer no início da cena para iniciar o ciclo dia-noite. A função _on_DayNightTimer_timeout será executada sempre que o temporizador chegar a zero, o que significa a transição iminente do dia para a noite ou vice-versa.

Seguindo este procedimento, o resultado será um temporizador dia-noite totalmente operacional, que alterna perfeitamente entre o dia e a noite no seu jogo Godot, permitindo-lhe assim incorporar diversos aspectos de jogabilidade e modificações visualmente impressionantes de acordo com a hora do dia em vigor.

Adaptando o plano de fundo para o dia e a noite

Para melhorar a representação visual do ciclo dia-noite na sua cena, é importante incorporar um método que exiba a transição do dia para a noite sem problemas. Uma solução eficaz envolve a utilização de um nó ColorRect para gerar um pano de fundo apropriado para ambos os cenários. Ao utilizar esta técnica, obtém mais flexibilidade na criação de transições suaves e um melhor controlo sobre o aspeto geral da cena.

Para criar um cenário dinâmico no seu projeto de motor Godot, deve primeiro introduzir um objeto ColorRect na cena. Este elemento serve como uma base adaptável para vários efeitos visuais e transições entre as horas do dia e da noite. Em seguida, é aconselhável mudar o nome deste componente para uma etiqueta mais descritiva, como “BackgroundRect”, para melhorar a sua legibilidade. Por fim, certifique-se de que o “BackgroundRect” é posicionado como a camada principal, colocando-o sobre toda a área visível da tela.

No painel Inspetor, configure a propriedade Cor para refletir a tonalidade de fundo pretendida, que simboliza as horas de luz do dia. Para conseguir isso, considere empregar um valor como Color(0.5, 0.5, 0.8), que corresponde a um tom suave de azul que evoca imagens de um céu brilhante e ensolarado durante o dia.

Actualize a sua base de código GDScript para se integrar perfeitamente com o

 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 

Modifique o aspeto do elemento BackgroundRect ajustando a sua tonalidade com base na hora atual do dia. Durante as transições do dia para a noite, altere a cor de fundo para um tom profundo de preto para um ambiente escuro. Por outro lado, durante o dia, adopte um tom suave de azul-celeste como cor de fundo.

/pt/images/day-background-in-godot-2d.jpg

Efeitos sonoros para o ciclo dia-noite

A incorporação de um design de som eficaz é essencial para criar uma experiência imersiva no ciclo dia-noite de Godot. A integração de sinais sonoros apropriados serve para aumentar o envolvimento do jogador, fornecendo um feedback significativo relativamente às mudanças ambientais. Felizmente, a incorporação de efeitos sonoros no projeto Godot pode ser conseguida com relativa facilidade.

Assegure-se de que, antes do início do projeto, possui recursos de áudio que consistem em gravações de som que representam os fenómenos auditivos diurnos e noturnos. Por exemplo, é concebível que possua melodias de aves para o primeiro caso e o chamamento de grilos ou o pio de uma coruja para o segundo.

Para incorporar pistas de áudio no seu projeto de motor Godot, é necessário incluir duas instâncias de AudioStreamPlayer2D na cena. Estas devem ser nomeadas em conformidade, com nomes adequados como “DaytimeSounds” e “NighttimeSounds”.

Modificar o código GDScript para facilitar a transição de áudio do dia para 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 

Após a expiração do temporizador dia-noite, este algoritmo avalia o estado atual e ativa as pistas de áudio correspondentes para facilitar uma transição perfeita entre fases.

Sinta-se à vontade para personalizar a sua seleção de efeitos sonoros livres de direitos de autor, de modo a alinhar-se com o tom e o ambiente que deseja para o seu jogo. Além disso, tem a flexibilidade de incorporar várias faixas de áudio ou empregar vários efeitos de áudio, como reverberação, eco e outros, para produzir um ambiente auditivo mais envolvente.

Torne os seus jogos Godot mais envolventes com um ciclo diurno e noturno

A incorporação de um ciclo diurno no seu jogo Godot pode aumentar profundamente o nível de imersão e envolvimento experimentado pelos jogadores. Esta adição não só confere ao mundo do jogo uma camada adicional de realismo, como também permite a introdução de mecânicas de jogo diversas e evolutivas, bem como a promoção de narrativas imaginativas.

Considere a possibilidade de ajustar o ciclo dia-noite de acordo com os temas e a mecânica específicos do seu jogo, enquanto explora vários elementos visuais e interactivos que podem contribuir para uma experiência de jogo envolvente e cativante.