quarta-feira, 8 de julho de 2015

Jogo Paper 2D: GameManager e GameMode

Este artigo é a continuação do artigo "Jogo Paper 2D: Os carros".

Neste artigo vamos criar um novo Blueprint com o nome "GameManager". Este Blueprint é responsável por criar os carros inimigos, gerenciar a pontuação do jogador e do nível atual do jogo. Ele também escreve na tela a pontuação e o nível atual.

Também serão feitos alguns ajustes no Blueprint "EnemyCar" para poder interagir com o Blueprint "GameManager". Ao final do artigo será criado um novo "GameMode" para usar o Blueprint "GameManager" como HUD. 

  • GameManager

Crie um novo Blueprint do tipo "HUD". Para isso é necessário expandir a opção "All Classes" e pesquisar por "HUD":

Clique para aumentar

Coloque o nome "GameManager" para este Blueprint.

Crie as variáveis "Score"(tipo Inteiro), "Level" (tipo Inteiro), "EnemyCarSpeed" (tipo Float) e "Menu" (tipo Boolean):


O jogo pode estar no Menu, onde é exibida a mensagem "Press ENTER to start" ou executando. Isto é controlado pela variável booleana "Menu". O evento BeginPlay atribui um valor positivo para a variável "Menu", desta forma o jogo inicia no Menu. Além disso é habilitado os eventos de Input para o Blueprint "GameManager":


Ao pressionar a tecla Enter, é verificado se o jogo está no "Menu", se estiver é chamado o evento customizado "StartGame":


O evento customizado "StartGame" prepara as variáveis e timers para uma nova partida e cria uma instância do "PlayerCar" na posição ( X=320, Y=1, Z=100 ). O valor do eixo Y é "1" para que o "PlayerCar" fique na frente do background que tem Y=0.

Clique para aumentar

O evento "TimerCreateEnemyCar" é inicialmente chamado a cada 2 segundos. Ele apenas cria uma instância do "EnemyCar" na posição ( X=320, Y=1, Z=520 ) que fica acima da tela do jogo. Foi criado uma nova variável no Blueprint "EnemyCar" que guarda uma referência ao "GameManager". A criação desta variável é mostrado logo abaixo nos ajustes do "EnemyCar".


O evento "TimerAddScore" é chamado a cada 0,5 segundo. Ele aumenta os pontos do jogador de acordo com o valor da variável "Level" multiplicado por 50.


O evento "TimerChangeLevel" é chamado a cada 10 segundos. Estas são algumas das ações deste evento:
  • Aumenta a velocidade do carro inimigo em 25.
  • Aumenta o valor da variável "Level".
  • Recria o "TimerCreateEnemyCar" com um tempo menor baseado no nível atual.
  • Verifica se já está no nível 5 para desativar o "TimerChangeLevel", pois 5 é o nível máximo.


Clique para aumentar

O evento "Receive Draw Hud" pertence a classe HUD. Ele é usado para desenhar os pontos e o nível na tela. Se o jogo estiver no Menu é desenhado a mensagem "Press ENTER to Start".

Clique para aumentar

O evento customizado "Game Over" ativa o menu, destrói todos as instâncias de "EnemyCar" e limpa todos os timers. Este evento será chamado pelo "EnemyCar" quando colidir com o jogador.

Clique para aumentar


  • EnemyCar

Vamos concluir o Blueprint "EnemyCar" que foi iniciado no artigo anterior. É preciso criar uma variável para referenciar o "GameManager". Marque a opção "Editable" e "Expose on Spawn" para podermos passar a referencia ao GameManager no momento da criação do "EnemyCar" como foi visto acima.


Altere o evento "Tick" para que ele use a variável "EnemyCarSpeed" do "GameManager":

Clique para aumentar

Crie o evento "ActorBeginOverlap" que testa a colisão com o jogador e, caso ocorra, avisa o "GameManager" que é fim de jogo.

Clique para aumentar

O uso da ação "Cast To" acima serve para verificar se o Ator que colidiu é do tipo "PlayerCar".

  • GameMode

Crie um novo blueprint do tipo "GameMode" com o nome "GameMode2D". Dê duplo clique no blueprint e mude a propriedade "Default Pawn Class" para "Pawn" e no "HUD Class" coloque o "GameManager": 


    Acesse o menu "Edit->Project Settings...", categoria "Maps & Modes". No "Default GameMode" selecione o GameMode2D que criamos:

    Clique para aumentar

    Com isso concluímos a implementação deste "Jogo Paper 2D".


    Próximo: Animação 2D com Flipbooks
    Anterior: Jogo Paper 2D: Os carros
    Sumário