HUD e menu de pausa
Você quer um placar que acompanha o jogo e uma tela de pausa com botões, sem calcular posição de texto no código.
- Em Recursos, + › Nova interface… e chame de
Hud. - Ponha um Texto chamado
Moedasno canto de cima e uma Barra chamadaVida. - Abra a room e, no Inspetor, marque
Hudem Interfaces: ela passa a abrir junto com a room.
No código de um objeto da fase, escreva o que cada um mostra:
#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);}A tela de pausa
Seção intitulada “A tela de pausa”- Crie a interface
Pausa: um Painel no centro com um Texto e três Botões (Continuar,Recomecar,Sair). - Para escurecer o jogo atrás, ponha no fim da lista um Painel do tamanho da tela, preto com transparência.
- Em Configurações do projeto, crie a ação
pausar(por exemplo, com a tecla Esc).
O código liga os botões e a 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"); }}Como funciona
Seção intitulada “Como funciona”Ui::get("Hud")devolve a interface; os colchetes devolvem um elemento dela pelo nome que está no editor.setPaused(true)para as instâncias: temporizadores,onUpdate, movimento e colisões. O desenho e a interface continuam.- Com o jogo pausado, cada instância recebe
onPausedUpdateno lugar doonUpdate. É ali que se lê a tecla que tira a pausa. - O
thisnoonClickdiz de quem é o código: se a instância for destruída, o botão para de chamá-lo. - Os botões respondem ao mouse e ao teclado: as ações
cima,baixo,esquerdaedireitaandam entre eles, econfirmaraperta. - O painel escuro prende o clique: com a pausa aberta, clicar não chega ao jogo.
- Cada interface existe uma vez só. O que o código muda nela continua valendo depois de esconder e mostrar;
Ui::reset("Hud")volta ao que está no editor.
O modelo Plataforma já vem com um Hud, uma Pausa e uma tela de Fim feitos assim. O modelo Zumbis vai além: um jogo de tiro em 1920 × 1080 com HUD, loja, pausa e fim de jogo.
Veja também
Seção intitulada “Veja também”- Interface, a aba do editor.
- Interface, a referência do código.
- Loja com lista de itens.
