segunda-feira, 3 de novembro de 2014

Usando Level Blueprints

Os Blueprints que criamos até agora são conhecidos como "Class Blueprints". A Unreal Engine 4 possui um tipo especial de Blueprint conhecido como "Level Blueprints". Cada Nível do jogo possui um Blueprint padrão associado a ele. Para acessar o Level Blueprint clique no botão "Blueprint" na parte superior do editor e escolha a opção "Open Level Blueprint":


O "Level Blueprint" é aberto direto no modo de edição do "Graph" que é praticamente o mesmo de um "Class Blueprint". É possível fazer muitas coisas no Level Blueprint, mas é importante que fique no Level Blueprints apenas as Ações que são específicas para o Nível atual. Ações relacionadas a um Ator que podem ser reaproveitas em vários outros níveis devem ser transformadas em um "Class Blueprint".

Existem alguns tipos de Atores que são bastante usados em conjunto com Level Blueprints. Estes Atores são do tipo "Trigger" (gatilho) e "Target Point" (ponto de alvo). Estes atores estão disponíveis no editor na categoria "Basic" do "Place Mode" conforme a imagem:


Como exemplo, imagine que um nível possui duas áreas interligadas por uma ponte e que a única forma de acessar a segunda área é através desta ponte. Esta ponte é um ótimo local para colocar uma Trigger que irá gerar um evento quando o jogador passar por ela. 

Este evento pode criar novos inimigos na segunda área ou gerar uma explosão. A imagem abaixo ilustra esta idéia mostrando um "Trigger Box" que foi colocado na ponte. O "Trigger Box" não é exibido durante o jogo.

Clique para aumentar

Usamos o "Target Point" para criar facilmente pontos de referência no Nível. Seguindo o exemplo acima adicione um "Target Point" ao Nível para indicar o local onde será gerada uma explosão quando o jogador encostar na "Trigger Box". Coloque o nome do "Target Point" como "ExplosionPlace":


Os valores de escala do Target Point estão em 5.0 porque eles serão usados para aumentar o tamanho da explosão. O resultado final deste "Level Blueprint" ficará como a imagem abaixo, onde o jogador detona uma explosão ao passar pelo Trigger:


Para criarmos as Ações do Level Blueprint responsáveis pela explosão, primeiro selecione o "Trigger Box" que foi adicionado ao Nível. Depois abra o Level Blueprint e clique com o botão direito para abrir o menu de Ações. A opção "Context Sensitive" tem de estar marcada. 

Logo no início serão exibidas as Ações relacionadas ao "Trigger Box" que está selecionado no Nível, conforme imagem abaixo. É necessário adicionar o evento "OnActorBeginOverlap" e também será preciso escolher "Add Reference to TriggerBox" para criarmos uma variável que represente o Trigger Box no "Event Graph".


Também iremos precisar de uma referência ao "Target Point" onde deve ocorrer a explosão. Para fazer isso, volte ao Nível e seleciona o "Target Point" que demos o nome de "ExplosionPlace", depois retorne ao Level Blueprint, clique com o botão direito no Event Graph e escolha a opção "Add Reference to ExplosionPlace":


Já temos os principais elementos que estarão no Event Graph. Quando o Evento for acionado, iremos destruir o "Trigger Box", pois queremos que este evento ocorra somente uma vez, depois iremos criar um novo Ator baseado no "Blueprint_Effect_Explosion" que vem no "Start Content" do editor. Este novo Ator será criado na posição onde está o "Target Point" com o nome "ExplosionPlace". O Graph do Level Blueprint vai ficar desta forma:

Clique para aumentar

Para criar a explosão usamos a Ação "SpawnActor" e no parâmetro Class selecionamos a classe "Blueprint_Effect_Explosion_C" que equivale ao "Blueprint_Effect_Explosion". O outro parâmetro informado é o "Spawn Transform" que é obtido do "Explosion Place". Um "Transform" contém informações sobre a Localização, Rotação e Escala de um Ator.

No próximo artigo vamos conhecer os "Event Dispatchers" que permitem um tipo de interação entre os "Class Blueprints" e os "Level Blueprints".