Programando Inimigos

 

  • Crie um objeto do tipo Sprite

  • Importe seus sprites da pasta assets/sprites/goomba.png

  • No painel de propriedades, altere a opção “Loop” para “Yes”, dessa forma a animação ficará rodando indefinidamente.

  • Adicione o comportamento “Plataform” ao Sprite recém-criado.

  • Nas propriedades do comportamento, desabilite a opção “Default controls”, caso contrário, você controlará tanto o personagem quanto o inimigo com o teclado.

 

Variáveis de Instância

 

Variáveis de instância são variáveis criadas junto com o objeto e só podem ser usadas por ele. Vamos usar uma para fazer nosso personagem se mover.

 

  • Crie uma variável de instância clicando em “Instance variables”, no painel de propriedades do objeto e uma nova janela se abrirá. Ela é muito parecida com a janela de comportamentos. Clique no “+” para criar, de fato, a variável.

  • Preencha os campos conforme mostrado abaixo.

 

O prefixo “inst_” serve para deixar claro e nos lembrar que essa variável é de instância e não global.

 

  • Adicione um novo evento em Event sheet 1, selecione o Sprite do inimigo e selecione a condição “Compare instance variable”.

  • No campo “Value” escreva “direita”, entre aspas mesmo, depois, clique em “Done”.

  • Adicione uma ação a este evento, selecione o sprite do inimigo e escolha a ação “Simulate control”

  • Uma nova janela se abrirá, escolha a opção “Right” para que o inimigo ande para a direita e clique em “Done”.

 

Agora rode o jogo.  Nosso inimigo se move, mas também se mata, vamos evitar isso com barreiras invisíveis.

Adicionando barreiras invisíveis

  • Adicione um novo objeto do tipo TiledBackground, pinte-o e redimensione-o até preencher apenas um quadradinho e posicione-o da forma que é mostrado na imagem.

  • Para que esse quadrado preto não apareça no jogo, clique nele e altere a propriedade “Initial visibility” para “Invisible”

  • Também mude a Layer em que o objeto está, mova-a para a Layer 0, dessa forma, a barreira não irá interagir com nosso jogador. Esta opção também está no painel de propriedades.

  • Agora vamos programar a ação de alterar o caminho do inimigo ao encostar na barreira, para isso, adicione um novo evento, selecione o Sprite do inimigo e escolha a condição “On collision with another object”.

  • Uma nova janela será aberta, clique no botão para selecionar o objeto com o qual queremos interagir, neste caso o TiledBackground que acabamos de criar. Ele provavelmente está nomeado “TiledBackground4” no seu projeto, no meu caso, seu nome está como “TiledBackground3”, mas isso não muda nada.

  • Sua seleção deverá ficar como mostrado abaixo, clique em “Done”.

  • Não vamos adicionar uma ação neste evento, porém, criaremos um sub-evento. Selecione o Sprite do inimigo e escolha a condição “Compare instance variable”, na janela que abrirá, preencha o campo “Value” com o texto “direita”, entre aspas.

  • Adicione uma ação ao sub-evento. Selecione o sprite do inimigo e escolha a opção “Set value”

  • Na nova janela, no campo “Value”, coloque o texto “esquerda”, entre aspas mesmo.

  • Clique com o lado direito do mouse (na área marcada como mostrado abaixo), vá em Add e selecione a opção Add ‘Else’ ou simplesmente aperte a tecla X

  • Para a ação do Else copie, cole e edite a ação acima, alterando o “esquerda” para “direita” .Isso pode ser feito rapidamente clicando duas vezes na ação para editá-la. Seu programa deverá estar assim:

 

Seu bloco limitador de caminho de inimigos funcionará em ambos os lados desse jeito.

  • Copie e cole o evento de simulação de movimento do inimigo.

  • Altere o evento copiado, trocando o valor esperado para “esquerda” e a simulação de movimento para “Left”

 

Rode seu jogo e agora o inimigo vai e volta na tela.

Morrendo e Matando inimigos

 

Da mesma forma que o jogo original, mataremos nossos inimigos pulando em suas cabeças. Para isso a lógica que usaremos será:

Quando o personagem tocar no inimigo, se o personagem estiver mais alto que ele (na cabeça) o inimigo morre.

O programa para seguir esta lógica é:

  • Crie um evento;

  • A condição deste evento será: “Quando o Mario colidir com o Sprite inimigo”;

  • Este evento não terá ação, mas terá sub-eventos;

  • No primeiro sub-evento selecione o Sprite do Mário e escolha a condição “compare Y”;

 

  • Uma nova janela será aberta, nela, defina os campos da seguinte forma:

 

Os eixos X e Y no Construct 2 funcionam ao contrário, quanto mais para cima menor o valor de Y e quanto mais para a esquerda, menor o valor de X. Por isso na comparação usamos o “< Less than” (menor que), quanto menor o valor mais alto o personagem está.

“Sprite2.Y” mede a altura do inimigo.

  • Seu programa deve estar como mostrado abaixo.

 

Rode o programa e verá que o Mario agora pode matar inimigo

  • Crie um Else com a ação de destruir o Mario, dessa forma:

 

Pronto agora o Mario tanto mata quando morre para inimigos