terça-feira, 19 de agosto de 2014

Statue: Ações do Graph

Neste artigo vamos criar todas as Ações necessários para o Blueprint "Statue".

A primeira coisa que vamos fazer será criar uma variável para referenciar o blueprint "GameHUD". Desta forma podemos ler variáveis e chamar funções do "GameHUD" a partir do blueprint "Statue".

Mude para o modo "Graph" do blueprint "Statue" e clique no botão "+Variable". Coloque o nome da variável como "GameHUD". Clique no combo box ao lado de "variable type" para escolher o tipo da variável. Pesquise por "GameHUD" e escolha a opção "GameHUD_C" que está na categoria "object". O tipo "GameHUD_C" foi gerado pelo editor do unreal quando criamos o blueprint "GameHUD". A imagem mostra a variável "GameHUD":


No Evento "Begin Play" do Blueprint "Statue" precisamos armazenar a referência do GameHUD na variável que criamos e depois devemos inicializar os dados da "Statue".

Clique para aumentar

Para conseguirmos a referência do HUD que está sendo utilizado pelo jogo, precisamos primeiro pegar a referência do Player Controller. Depois usamos a função "Get HUD" passando o retorno da função "Get Player Controller" como parâmetro "target". 

A função "Get HUD" retorna um objeto do tipo HUD. Mas sabemos que estamos usando um objeto do tipo GameHUD, por isso precisamos usar uma função do tipo "Cast to" para converter este resultado em uma variável do tipo "GameHUD". 

Para adicionar a Ação "Cast to GameHUD" clique e arraste o valor de retorno da função "Get HUD" e solte no EventGraph para aparecer a lista de ações disponíveis. É preciso que a opção "Context Sensitive" esteja marcado.

As ações necessárias para a inicialização da "Statue" foram reunidas em um evento customizado chamado "Init Statue":

Clique para aumentar

Neste evento temos duas Ações principais: 
  • "Set Actor Location": Esta ação define uma nova posição para a estátua. Esta posição é representada por um Vetor ( X, Y, Z ) onde os valores X e Y são aleatórios. Os valores mínimos e máximos de X e Y representam a área do jogo. Estes valores foram obtidos no artigo "Preparação inicial do Jogo".
  • "Set Timer": Este Timer representa o tempo em segundos que a estátua irá demorar para mudar de posição. Quando este tempo acabar, o evento "Init Statue" é chamado para definir uma nova posição. O tempo é o resultado da expressão "6 - Nível". O nível atual é obtido na variável "Level" do blueprint GameHUD.  Ao ligar o resultado da expressão, que é um valor inteiro, ao parâmetro "Time" que é fracionário, o editor automaticamente cria um conversor entre os dois tipos. 


O último evento do "Statue" é o "Actor Begin Overlap" que é acionado quando algum Ator do jogo estiver se sobrepondo à estátua:

Clique para aumentar

O valor passado para o parâmetro "Condition" do Branch é o resultado da expressão booleana que verifica se o ator que está se sobrepondo é o jogador e o jogo não está no modo "Game Over". A estátua só será coletada se essas duas condições forem verdadeiras.

Caso a estátua seja coletada, é chamada a função "StatueCollected" do GameHUD que gerencia a pontuação do jogador e o nível do jogo. 

Depois é chamado o Evento "InitStatue" para mudar a posição da estátua.

Estas são todas as ações necessárias para o Blueprint 
"Statue". Para concluir adicione 3 instâncias do Blueprint "Statue" no nível em qualquer posição.


Próximo: 
GameHUD: Fim de Jogo
Anterior: Statue: Componentes
Sumário