Como criar um cronômetro no seu jogo

a-0528

Desenvolver jogos implica em criar dinâmicas interativas e envolventes para os jogadores, e um dos elementos que vemos frequentemente em jogos são cronômetros. Seja para limitar o tempo de uma fase ou para contar o tempo que leva para completar um desafio, saber como implementar isso é importante.

E o legal é que é bem simples!

Passo 1: Criando o Script

O primeiro passo é criar um novo script em C# que irá gerenciar o cronômetro. Vá até a janela “Project”, clique com o botão direito no painel, selecione “Create > C# Script” e nomeie-o como “Timer”, ou “Contador”.

Passo 2: Estrutura Básica do Script

Abra o script recém-criado no seu editor. Para criar a lógica de cronômetro vamos fazer o seguinte script.

using UnityEngine;
using TMPro;  // Inclui a biblioteca TMPro para poder usar o componente TMP_Text.

public class Contador : MonoBehaviour
{
    private float tempoAtual = 0;  // Variável que armazena o tempo atual do contador. Inicializada com zero.
    private bool executarContador = false;  // Controla se o contador está ativo ou não.
    private float duracaoMaxima;  // Armazena o valor da duração máxima que o contador pode atingir antes de parar.
    [SerializeField] private TMP_Text contadorText;  // Referência para o componente de texto onde o tempo será exibido. É marcado como SerializeField para ser acessível pelo editor da Unity.

    void Update()
    {
        if (executarContador)  // Verifica se o contador deve ser executado.
        {
            tempoAtual += Time.deltaTime;  // Incrementa o tempo atual com o tempo decorrido desde o último quadro.
            contadorText.text = tempoAtual.ToString("00");  // Atualiza o texto do contador para exibir o tempo atual com duas casas decimais.
            
            if (tempoAtual >= duracaoMaxima)  // Verifica se o tempo atual atingiu ou excedeu a duração máxima definida.
            {                
                executarContador = false;  // Desativa o contador.
                Debug.Log("Tempo máximo Atingido!");  // Registra uma mensagem no console indicando que o tempo máximo foi atingido.
            }            
        }
    }

    public void IniciarContador(float duracao)
    {
        tempoAtual = 0;  // Reinicia o contador zerando o tempo atual.
        duracaoMaxima = duracao;  // Define a duração máxima para o valor fornecido no argumento.
        executarContador = true;  // Ativa o contador para começar a contagem.
    }
}

Funções e Funcionalidades

  • Update(): Este método é chamado em cada quadro pelo motor da Unity. Ele verifica se o contador está ativo. Se estiver, atualiza o tempo e o texto exibido. Caso o tempo atual ultrapasse a duração máxima, o contador é desativado e uma mensagem é exibida.
  • IniciarContador(float duracao): Método público que permite iniciar o contador com uma duração específica. Ele também zera o tempo atual e ativa o contador para começar a contagem. Você pode chamar esse método a partir de outro script, para iniciar o contador. Caso queira iniciar no começo do jogo, ou quando ativar o objeto onde o script estiver, basta chamar esse método dentro do método Start do script.

Com esse script básico, você pode implementar um cronômetro funcional em seus jogos. Basta coloca-lo dentro de algum objeto da sua cena, definir nele o componente de TextMeshPro, para exibir o valor do contador na interface de usuário (se isso não for necessário basta apagar essa parte do script).

Depois disso só chamar o método IniciarContador dele.

Essa é uma base que você pode expandir e adaptar conforme necessário para suas próprias necessidades de jogo, adicionando funcionalidades como pausar e reiniciar o cronômetro, ou executar ações específicas ao final do tempo.

3 curtidas