HUD y menú de pausa
Quieres un marcador que acompañe al juego y una pantalla de pausa con botones, sin calcular posiciones de texto en el código.
- En Recursos, + › Nova interface… y llámala
Hud. - Pon un Texto llamado
Moedasen la esquina de arriba y una Barra llamadaVida. - Abre la room y, en el Inspector, marca
Huden Interfaces: pasa a abrirse junto con la room.
En el código de un objeto del nivel, escribe lo que muestra cada uno:
#include "Fase.hpp"#include "Moeda.hpp"#include <format>using namespace brasa;
void Fase::onUpdate() { Ui::Element hud = Ui::get("Hud"); hud["Moedas"].setText(std::format("Moedas: {}", moedas)); hud["Vida"].setValue(vida / 100.0f);}La pantalla de pausa
Sección titulada «La pantalla de pausa»- Crea la interfaz
Pausa: un Painel en el centro con un Texto y tres Botões (Continuar,Recomecar,Sair). - Para oscurecer el juego de atrás, pon al final de la lista un panel del tamaño de la pantalla, negro con transparencia.
- En Configuración del proyecto, crea la acción
pausar(por ejemplo, con la tecla Esc).
El código conecta los botones y la tecla:
void Fase::onSpawn() { Ui::Element pausa = Ui::get("Pausa"); pausa.hide(); pausa["Continuar"].onClick(this, [] { setPaused(false); Ui::hide("Pausa"); }); pausa["Recomecar"].onClick(this, [this] { restart(); }); pausa["Sair"].onClick(this, [] { quit(); });}
void Fase::onUpdate() { if (pressed("pausar")) { setPaused(true); Ui::show("Pausa"); }}
void Fase::onPausedUpdate() { if (pressed("pausar")) { setPaused(false); Ui::hide("Pausa"); }}Cómo funciona
Sección titulada «Cómo funciona»Ui::get("Hud")devuelve la interfaz; los corchetes devuelven un elemento suyo por el nombre que tiene en el editor.setPaused(true)detiene las instancias: temporizadores,onUpdate, movimiento y colisiones. El dibujo y la interfaz siguen.- Con el juego en pausa, cada instancia recibe
onPausedUpdateen lugar delonUpdate. Ahí se lee la tecla que quita la pausa. - El
thisen elonClickdice de quién es el código: si la instancia se destruye, el botón deja de llamarlo. - Los botones responden al mouse y al teclado: las acciones
cima,baixo,esquerdaydireitapasan de uno a otro, yconfirmarpulsa. - El panel oscuro retiene el clic: con la pausa abierta, hacer clic no llega al juego.
- Cada interfaz existe una sola vez. Lo que el código cambia en ella sigue valiendo después de ocultarla y mostrarla;
Ui::reset("Hud")vuelve a lo que está en el editor.
La plantilla Plataforma ya trae un Hud, una Pausa y una pantalla de Fim hechos así. La plantilla Zumbis va más allá: un juego de disparos en 1920 × 1080 con HUD, tienda, pausa y fin de juego.
Mira también
Sección titulada «Mira también»- Interfaz, la pestaña del editor.
- Interfaz, la referencia del código.
- Tienda con lista de ítems.
