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.