Aprenda a mostrar botones personalizados en escenas separadas para que actúen como menús de pantalla simples para sus juegos.

Conclusiones clave

  • Los menús personalizados en Godot pueden mejorar el compromiso y la experiencia del usuario al proporcionar una navegación fácil y un acceso rápido a las funciones del juego.
  • Godot proporciona un poderoso conjunto de herramientas para crear menús de interfaz de usuario personalizados utilizando nodos de control en el motor del juego.
  • Puede crear menús como menús de inicio, menús de pausa y pantallas de fin de juego en Godot agregando nodos apropiados e implementando su funcionalidad usando GDScript.

Los menús personalizados pueden mejorar en gran medida el compromiso y la experiencia del usuario de tu juego de Godot. Al crear menús intuitivos y visualmente atractivos, puede proporcionar a los jugadores una navegación fácil y un acceso rápido a varias funciones del juego.

Afortunadamente, Godot proporciona un poderoso conjunto de herramientas para crear menús de interfaz de usuario personalizados utilizando nodos de control.

instagram viewer

Configuración del juego de Godot

Para comenzar, crea una escena de juego 2D en el motor de juego de Godot. Agrega un CinemáticaCuerpo2D nodo para el personaje del jugador y adjunte un ColisiónForma2D nodo a él, defina una forma de rectángulo que represente el área de colisión del jugador.

El código utilizado en este artículo está disponible en este repositorio GitHub y es gratis para su uso bajo la licencia MIT.

Además, incluya un Sprite2D nodo para mostrar el personaje del jugador visualmente. A continuación se muestra un fragmento de código GDScript para habilitar el movimiento del jugador:

extiende KinematicBody2D

VELOCIDAD constante = 200
GRAVEDAD constante = 500
var velocidad = Vector2.ZERO

función_física_proceso (delta):
var move_direction = 0

si Input.is_action_pressed("ui_right"):
move_direction += 1

si Input.is_action_pressed("ui_izquierda"):
move_direction -= 1

velocidad.x = move_direction * VELOCIDAD
velocidad.y += GRAVEDAD * delta
velocidad = move_and_slide (velocidad, Vector2.UP)

En este código, defina una constante VELOCIDAD para controlar la velocidad de movimiento del jugador. Actualice la variable de velocidad en respuesta a la entrada del usuario y llame mover_y_deslizar() para mover al jugador teniendo en cuenta las colisiones y la gravedad del juego.

Crear un menú de inicio

Para crear un menú de inicio en Godot, agregue un nodo de Control como la raíz de la escena. Agregue un nodo Etiqueta como hijo de este nodo Control y establezca su texto en juego sencillo. Puede personalizar la fuente, el tamaño y el color de la etiqueta para que coincida con el estilo de su juego.

Después de eso, agregue un nodo Botón como elemento secundario del nodo Control. Establezca el texto del botón en Jugar un juego. Escribir código personalizado para el Jugar un juego botón para manejar su funcionalidad:

extiende Control

función_listo():
var playButton = $Boton
botón de reproducción.conectar("presionado", ser, "_on_PlayButton_presionado")

func _on_PlayButton_pressed():
# Carga la escena del juego
var escena del juego = precarga("res://GameScene.tscn")

# Transición a la escena del juego
get_tree().cambiar_escena (escena del juego)

Este código conecta el presionado señal de la botón de play hacia _en_el_botón_de_reproducción_presionado función. Esa función carga la escena del juego usando precarga() y crea una instancia de él. luego usa cambiar_escena() para pasar a la escena del juego.

Del mismo modo, puede agregar un Salida botón que los jugadores pueden usar para salir del juego:

función_listo():
var playButton = $Boton
var botón de salida = $Botón2
botón de reproducción.conectar("presionado", ser, "_on_PlayButton_presionado")
botónsalir.conectar("presionado", ser, "_on_ExitButton_presionado")

func _on_ExitButton_pressed():
# Salir del juego
obtener_árbol().salir()

Este código conecta el presionado señal del botón de salida al _en_el_botón_salir_presionado función. Esa función llama abandonar() para salir del juego.

Crear el menú de pausa

Para agregar un menú de pausa a tu juego de Godot, crea una nueva escena con un nodo de Control como la raíz del menú de pausa. Diseñar los elementos visuales del menú, incluyendo una etiqueta para en pausa y botones para reanudar el juego, volver al menú principal y salir del juego.

Agregue la escena como un nodo secundario del juego principal. En el script adjunto al nodo Control, agregue el siguiente código:

extiende Control

función_listo():
$btnReanudar.conectar("presionado", ser, "_on_resume_button_pressed")
$btnInicio.conectar("presionado", ser, "_on_menu_button_presionado")
$btnSalir.conectar("presionado", ser, "_on_exit_button_pressed")
pause_mode = Nodo. PAUSE_MODE_PROCESS
get_tree().en pausa = falso
self.hide()

func _entrada (evento):
si event.is_action_pressed("ui_cancel"):
sino self.es_visible_en_el_árbol():
# Pausa el juego cuando el menú de pausa no está visible
auto.mostrar()
get_tree().pausado = verdadero
demás:
# Reanuda el juego cuando el menú de pausa ya está visible
self.hide()
get_tree().en pausa = falso

func _on_resume_button_pressed():
# Ocultar el menú de pausa y reanudar el juego
self.hide()
get_tree().en pausa = falso

func _on_menu_button_pressed():
# Vuelve al menú principal
get_tree().cambiar_escena("res://MenúInicio.tscn")

función _on_exit_button_pressed():
# Salir del juego
obtener_árbol().salir()

En el _listo() función, conecte el presionado señal de los botones de reanudación, inicio y salida a sus respectivas funciones: _en_resume_button_pressed(), _on_menu_button_pressed(), y _on_exit_button_pressed().

Selecciona el modo_pausa del nodo a Nodo. PAUSE_MODE_PROCESS. Esto permite que el juego continúe ejecutándose mientras el menú de pausa está visible. Por defecto, oculta el menú de pausa usando self.hide() y establecer get_tree().en pausa a FALSO para asegurarse de que el juego no esté en pausa inicialmente.

Próximo, usar una sentencia if en el _entrada (evento) función para comprobar si el ui_cancelar se presiona la acción. Si el menú de pausa no está visible actualmente, puede pausar el juego mostrando el menú de pausa y configurando get_tree().en pausa a verdadero.

Crear una pantalla Game Over

Para implementar una pantalla game over en Godot, crea una escena separada llamada GameOver.tscn para definir sus elementos de interfaz de usuario y funcionalidad. Puede agregar esta escena como un nodo secundario cuando el jugador cruza los límites de la pantalla, lo que indica el final del juego.

Abre una nueva escena en Godot y agrega un nodo de Control como la raíz de la escena. Dentro del nodo Control, agregue un nodo Etiqueta para mostrar el Juego terminado texto. Personaliza la fuente, el tamaño y el color de la etiqueta según el estilo visual de tu juego.

A continuación, agregue nodos de botón para el Juega de nuevo y Salida opciones Colóquelos apropiadamente en la pantalla.

Conecte las señales de los botones a sus respectivas funciones para manejar las acciones cuando se hace clic. Por ejemplo, conecte el Juega de nuevo botón a una función llamada onPlayAgainPressed y el Salida botón a una función llamada onExitPressed.

Para manejar la funcionalidad del botón, debe definir las funciones correspondientes en el código GDScript de la escena del fin del juego. Aquí hay un ejemplo:

extiende Control

función_listo():
$Botón.conectar("presionado", ser, "onPlayAgainPressed")
$Boton2.conectar("presionado", ser, "onExitPressed")

func onPlayAgainPressed():
var gameScenePath = "res://GameScene.tscn"
get_tree().cambiar_escena (gameScenePath)

func onExitPressed():
obtener_árbol().salir() # Cierra la aplicación del juego

Una vez que haya configurado el GameOver.tscn escena y definió la funcionalidad necesaria del botón, puede usar el siguiente código en la escena principal del juego para mostrar la pantalla de finalización del juego:

extiende KinematicBody2D

función_física_proceso (delta):
# Comprobar si el jugador ha cruzado los límites de la pantalla
var screen_size = get_viewport_rect().tamaño
si velocidad.y > tamaño_pantalla.y o velocidad.y < 0:
mostrar_juego_sobre_pantalla()

función show_game_over_screen():
get_tree().cambiar_escena("res://GameOver.tscn")

La pantalla Game Over se verá así, con botones para que el jugador reinicie o salga:

Incluyendo características adicionales

Al crear menús de interfaz de usuario personalizados en Godot usando nodos de control, tiene la flexibilidad de agregar varias funciones para mejorar la funcionalidad y el atractivo visual de sus menús. Aquí hay algunas ideas para considerar.

Transiciones animadas

Agregue transiciones suaves entre diferentes pantallas de menú, como fundidos de entrada, deslizamiento de entrada o efectos de escala. Puede lograr esto modificando las propiedades de los nodos de control a lo largo del tiempo utilizando interpolaciones o reproductores de animación.

Efectos de sonido

Implemente efectos de sonido para proporcionar comentarios de audio cuando el jugador presiona los botones del menú. Puede reproducir diferentes sonidos para hacer clic en los botones, transiciones de menú u otras interacciones para que los menús se sientan más receptivos y atractivos.

El sistema de audio incorporado de Godot facilita la reproducción de sonidos en los momentos apropiados.

Efectos visuales

Utilice sombreadores o sistemas de partículas para agregar efectos visuales a sus menús. Por ejemplo, puede aplicar un efecto de brillo sutil a los botones seleccionados o crear efectos de partículas que se activen cuando se produzcan determinadas acciones del menú. Estos efectos pueden agregar una sensación pulida e inmersiva a su interfaz de usuario.

Música de fondo

Considera jugar música de fondo libre de derechos de autor específico para cada pantalla de menú para crear una atmósfera más inmersiva. Puede usar flujos de audio o buses de audio en Godot para administrar la música de fondo y garantizar transiciones perfectas entre diferentes pistas a medida que el reproductor navega por los menús.

Soporte de localización

Si planea traducir su juego a varios idiomas, considere agregar soporte de localización a sus menús de interfaz de usuario.

Proporcione un mecanismo para cambiar dinámicamente el contenido del texto de las etiquetas y los botones según el idioma seleccionado. Las herramientas y recursos de localización de Godot pueden ayudar con la gestión de elementos de interfaz de usuario multilingües.

Recuerde probar e iterar sus menús con usuarios reales para asegurarse de que las funciones adicionales mejoren la experiencia general del usuario y sean intuitivas para navegar. Preste atención a las consideraciones de rendimiento, especialmente cuando use animaciones y efectos visuales, para garantizar interacciones de interfaz de usuario fluidas y con capacidad de respuesta.

Hacer que los juegos de Godot sean más atractivos con el menú de interfaz de usuario personalizado

Los menús personalizados de la interfaz de usuario pueden desempeñar un papel crucial en la participación de los jugadores. Proporcionan una navegación intuitiva, permiten un fácil acceso a las funciones del juego y mejoran el atractivo visual general de su juego.

Con un poco de creatividad y algo de codificación, puede diseñar menús que no solo brinden una funcionalidad esencial, sino que también cautiven a los jugadores y mejoren su experiencia de juego en general. Entonces, comience a explorar y crear sus propios menús únicos para que sus juegos de Godot se destaquen entre la multitud.