Añade atmósfera y mecánicas de juego únicas con la salida y la caída del sol.
Un ciclo día-noche puede agregar un elemento inmersivo a tus juegos, agregar variedad a las imágenes y crear mecánicas interesantes. Juegos como Minecraft, Animal Crossing y Don't Starve utilizan esta técnica de manera efectiva, y es una que podrías considerar agregar a tus propios juegos, particularmente aquellos con un elemento en tiempo real.
Afortunadamente, en Godot 4 lograr un ciclo día-noche es más fácil que nunca.
Configurando el juego de Godot
Antes de sumergirte en la implementación del ciclo día-noche, establece las bases de tu juego. Comience creando un nuevo proyecto 2D en Godot 4. Configure su proyecto con la configuración de proyecto necesaria.
El código utilizado en este artículo está disponible en este repositorio de GitHub y su uso es gratuito bajo la licencia MIT.
Ahora, crea un personaje jugador. En tu escena, agrega un PersonajeCuerpo2D. En su interior, añade un ColisiónForma2D con forma de rectángulo y Sprite2D. Esto representará visualmente a tu personaje.
Para permitir que el reproductor se mueva, puede utilizar el siguiente código GDScript. Adjunte este script a su nodo de personaje:
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)
Este código permitirá al jugador moverse hacia la izquierda, derecha, arriba y abajo usando las teclas de flecha. Tú también puedes agrega algunos enemigos para que tu jugador lo esquive. Usar Cuerpo estático2D nodos para estos enemigos y ajusta sus formas y posiciones en consecuencia.
Agregue un temporizador para el ciclo diurno y nocturno
Para crear un ciclo día-noche, necesita un temporizador que funcione continuamente, alternando entre las fases diurna y nocturna. Este cronómetro será el responsable de seguir el paso del tiempo en tu juego.
Agrega un nodo Temporizador a tu escena Godot. Puede hacer esto haciendo clic derecho en el panel Escena, eligiendo Agregar nodoy luego buscando Temporizador en la biblioteca de nodos.
Cambie el nombre del nodo Temporizador a algo significativo como DíaNocheTemporizador para mayor claridad. Configure las propiedades del nodo Temporizador en el panel Inspector. Específicamente, establezca el Tiempo de espera propiedad a 0 (este es el retraso inicial antes de que comience el temporizador) y verifique el Un trago propiedad para que el temporizador se repita.
Ahora, agregue un código GDScript que administre el ciclo día-noche:
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
En el _listo función, inicie el DíaNocheTemporizador cuando se carga la escena para iniciar el ciclo día-noche. El _on_DayNightTimer_timeout La función se ejecutará cada vez que el temporizador llegue a cero, que es cuando llega el momento de hacer la transición entre el día y la noche.
Si sigue estos pasos, tendrá un temporizador funcional de día y noche que cambia entre el día y la noche. permitiéndote agregar elementos de juego dinámicos y cambios visuales a tu juego de Godot según la hora del día.
Adaptación del fondo para el día y la noche
Para complementar su ciclo día-noche, necesita una forma de representar visualmente las transiciones entre el día y la noche. Puedes usar un incorporado ColorRect nodo para crear un fondo adecuado tanto para el día como para la noche. Este enfoque permite transiciones más suaves y un mayor control sobre las imágenes.
En tu escena de Godot, agrega un ColorRect nodo. Este nodo servirá como fondo que cambia de color para representar el día y la noche. Cambiar el nombre del ColorRect nodo a algo significativo como FondoRecto. Colóquelo como capa de fondo, asegurándose de que cubra toda la ventana gráfica.
En el panel Inspector, establezca el Color propiedad a su color de fondo inicial, que debe representar el día. Por ejemplo, puedes usar Color (0,5, 0,5, 0,8) para un cielo diurno azul claro.
Ahora, actualice su código GDScript para que funcione con el ColorRect nodo:
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
Actualiza el color del FondoRecto nodo para reflejar la hora del día. Por ejemplo, configúrelo en negro cuando pase a la noche, creando un fondo oscuro. Al pasar al día, configúrelo en azul claro.
Efectos de sonido para el ciclo día-noche
Los efectos de sonido pueden desempeñar un papel crucial a la hora de mejorar la inmersión y el realismo de tu ciclo día-noche en Godot. Proporcionan señales auditivas a los jugadores, haciendo que la transición entre el día y la noche sea más cautivadora. Tu puedes fácilmente agrega efectos de sonido a tu juego de Godot.
Antes de comenzar, asegúrese de tener recursos de audio (archivos de sonido) que representen sonidos diurnos y nocturnos. Por ejemplo, es posible que tengas el canto de los pájaros durante el día y los grillos o los ululares de los búhos durante la noche.
En tu escena de Godot, agrega dos AudioStreamPlayer2D nodos y nombrarlos apropiadamente. Puedes nombrarlos algo como $Sonidos diurnos y $Sonidos Nocturnos.
Ahora, actualice el código GDScript para gestionar las transiciones de sonido entre el día y la noche:
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
Cuando el temporizador día-noche expira, este código verifica a qué fase debe pasar y reproduce los sonidos apropiados para que coincidan.
Siéntete libre de personalizar tu efectos de sonido libres de derechos de autor para que coincida con el tema y la atmósfera de tu juego. También puedes superponer varias pistas de audio o utilizar efectos de audio (reverberación, eco, etc.) para crear una experiencia auditiva más rica.
Haz que tus juegos de Godot sean más atractivos con un ciclo día-noche
Implementar un ciclo día-noche en tu juego de Godot puede mejorar significativamente la inmersión y el compromiso del jugador. Agrega profundidad al mundo de tu juego, introduce elementos de juego dinámicos y permite una narración creativa.
Recuerda adaptar el ciclo día-noche al tema y la mecánica únicos de tu juego, y no lo dudes. experimentar con diferentes efectos visuales y de juego para crear un juego verdaderamente cautivador experiencia.