Construindo um jogo de Plataforma - Guia para Iniciantes

Lembre-se que, para saber se o Tim está subindo ou descendo, precisamos saber em que andar ele estava da última vez que verificamos. Por isso, vamos precisar de outra variável global que usaremos para armazenar o número do andar anterior:

Add global variable: prevFloor (deixe o tipo padrão como 'Number' e o valor inicial em 0).

Sempre que Tim cair para fora do layout, nós redefinimos o valor inicial de 'prevFloor' no event Player -> Is outside layout:

Ação: System -> Set value -> prevFloor: 0

Agora a gente pode usar todas essas coisas para dar ao Tim o número adequado de pontos quando ele pular em um andar (e ficar lá). Mas como nosso jogo sabe em que andar ele pulou?

Bem, vamos lembrar que adicionamos uma variável de instância chamada 'floor' aos objects 'Flooring', cujo valor corresponde ao nível do andar. Assim, uma vez que o Player tiver pulado em um andar, podemos testar esse valor e aumentar a pontuação com o valor correspondente a variável de instância 'points'. Só precisamos descobrir em qual instância do object Flooring o Player pulou. Podemos fazer isso adicionando uma segunda condição ao event Player | Platform On landed:

Clique com o botão direito na condição Player | Platform On landed e adicione esta outra condição:

Flooring -> (Pick) Pick nearest/furthest -> (Which) nearest / (X) Player.X / (Y) Player.Y

O que isso faz? Bem, como o Manual nos fala em Como funcionam os eventos, "as instâncias envolvidas... são 'escolhidas' para um evento. Então, as ações são executadas apenas para as instâncias selecionadas pelas condições". Nesse caso, isso significa que, sempre que o Player pular e parar em algum lugar, qualquer instância do object Flooring próxima dele é selecionada, dessa forma quando adicionamos um sub-event 'System add Flooring.points to score' (como vamos fazer) e essa ação é executada, o System sabe o número correto de pontos a serem adicionados sem termos que adicionar eventos separados para cada instância do object Flooring. Isso é parte do poder do Construct 2.

Assim, agora só precisamos das ações adicionais que serão executadas quando o Player pular em um andar. Estas ações serão adicionadas como sub-events da condição dupla Player | Platform On landed / Flooring | Pick nearest ...:

Condição: System -> Compare two values -> First value: prevFloor Comparison: Less than Second value: Flooring.floor

Ação: System -> (Global & local variables) Add to ->Variable: score Value:Flooring.points

Ação: System -> (Global & local variables) Set value ->Variable: prevFloor Value:Flooring.floor

Condição: System -> Compare two values -> First value: prevFloor Comparison: Greater or equal Second value: Flooring.floor

Ação: System -> (Global & local variables) Set value ->Variable: prevFloor Value:Flooring.floor

Depois de todo esse trabalho, ainda não temos nada pra exibir! É hora de criar um HUD (heads-up display).

Como mostrado na página 7 do Guia para iniciantes ao Construct 2, precisamos adicionar uma nova camada chamada 'HUD'. (Certifique-se de que ela seja a layer mais ao topo e que ela esteja selecionada). Nela, vamos inserir dois objects do tipo Text, um no canto superior direito chamado 'StatusText' e o segundo no centro da tela chamado 'ResultText' (você pode querer definir as propriedades do object Text pra uma fonte menos simples). StatusText será usada para exibir a pontuação e a vida do Player, e ResultText irá mostrar ou 'Game Over', quando a vida do Tim chegar a 0, ou 'Nível 2 alcançado', se o Player chegar ao andar de cima com uma pontuação de 25 ou mais (vamos deixar a mudança de verdade para uma parte mais avançada desse tutorial).

Agora podemos adicionar um outro sub-event a condição dupla Player | Platform On landed / Player | Is overlapping Flooring para mostrar quando ele atingiu o nível 2. Este sub-evento tem duas condições:

Condição: Flooring -> Compare instance variable -> floor: Equal to: 3

Condição: System -> (Global & local variables) Compare variable ->Variable: score: Greater or equal: 25

Ação: ResultText -> Set text: ''Level 2 reached"

Agora, para mostrar a mensagem 'Game over' e reiniciar a vida do Tim para a próxima jogada - faremos um novo event (não vamos mais usar sub-events):

Condição: System -> (Global & local variables) Compare variable ->Variable: health: Equal to: 0

Ação: ResultText -> Set text: ''Game over"

Ação: System -> (Global & local variables) Set value -> health :3

Ação: System -> (Time) Wait -> Seconds: 3

Ação: ResultText -> Set text: ''" (apagamos a mensagem 'Game over', para preparar a tela para a próxima jogada)

Por fim, enquanto o game está rodando, precisamos manter os status da pontuação e da vida atualizados constantemente:

Condição: System -> Every tick

Ação: StatusText -> Set text: "Score: " & score & " Health: " & health

Bem, esse é o fim da segunda parte desse tutorial de jogos de plataforma. Na próxima parte, vamos ver como passar para o nível 2 e aumentar o desafio do Tim com plataformas móveis. E, por favor, poste seus comentários sobre o que você gostaria de ver nas próximas partes do tutorial (e sinta-se livre pra me corrigir).

Enquanto isso, se você achar que o jogo está muito difícil, lembre-se que, enquanto desenvolvedor do jogo, você tem total liberdade para mudar as propriedades do behavior Platform do Player :) .

.CAPX

platform-tutorial-i.capx

Download now 608.15 KB
  • 0 Comments

  • Order by
Want to leave a comment? Login or Register an account!