domingo, 29 de junho de 2014

GameHUD: Timer e Custom Event

O jogo de exemplo possui um tempo que fica armazenado na variável "Time". Esta variável inicia com o valor 30 e diminui uma unidade a cada segundo.

O valor desta variável é desenhado na tela. Em um artigo posterior será mostrado as ações do GameHUD que desenham os valores das variáveis na tela.


Um Timer e um Custom Event (Evento Customizado) são usados para diminuir o valor da variável "Time" a cada segundo. 

Para definir um Timer existe uma ação no blueprint chamada "SetTimer". Para encontrá-la clique com o botão direito no EventGraph do GameHUD e digite "timer" na caixa de pesquisa. A imagem abaixo mostra as opções de Ações relacionadas a "Timer".


Um Timer é programado para executar uma determinada função (ou evento customizado) depois que acabar o tempo determinado. 

No artigo anterior que definiu o conteúdo da Macro "StartGame", vimos que a ação "SetTimer" era chamada para inicializar um Timer com os seguintes valores:


Este Timer irá chamar continuamente um Evento Customizado com o nome de "Clock" a cada segundo.

O significado dos parâmetros da função "SetTimer" são os seguintes:
  • Object : Objeto que contém o Timer. O valor padrão é o Blueprint atual.
  • Function Name : Nome da função (ou evento customizado) que será chamada quando o tempo acabar.
  • Time : Tempo em segundos da duração do Timer.
  • Looping : Indica se o Timer continuará sua execução ou se executará apenas uma vez.

Agora precisamos criar o Evento Customizado com o nome "Clock".

Para criar um Evento Customizado, clique com o botão direito no EventGraph, expanda a categoria "AddEvent" e selecione "Custom Event..." conforme imagem abaixo. Coloque o nome do evento como "Clock" (relógio).


Este novo evento "Clock" possui as seguintes responsabilidades:
  • Diminuir em 1 o valor da variável "Time";
  • Verificar se a variável "Time" é igual a zero. Se for verdade, faça as ações abaixo:
      • Definir a variável booleana "GameOver" com o valor "true"(verdadeiro);
      • Limpar o Timer para que ele pare de chamar o evento "Clock";


O Evento "Clock" deve ficar desta maneira:

Clique para aumentar