Tutorial: GameMaker Studio – Parte 04: Tratamento de Colisão e Pontuação

No tutorial anterior, mostrei como gerar animações de movimentos, sendo controláveis (como as raquetes) ou automáticos (como a bola). Entretanto, quando nós testamos o jogo, a bola vai para o infinito e além. Para corrigir isto, precisamos criar um tratamento de colisão.

Também aproveitaremos e adicionaremos um sistema de pontuação que será mostrado na tela.

Tratamento de Colisão

É a bola que vai bater nas raquetes, portanto vamos fazer o tratamento de colisão no nosso objeto obj_bola e abriremos a janela de propriedades do objeto.

A melhor coisa quando trabalhamos com uma ferramenta de desenvolvimento, é quando as coisas tornam-se bem simples. A colisão é considerada um evento, então clique em “Add Event” e, em seguida, escolha “Collision”. Ao clicar no botão, ele vai pedir para selecionar o objeto com o qual irá colidir, que no nosso caso é o “obj_raquete”.

Agora, clique na aba “Control” e clique no ícone “Execute Code” para adicionar o seguinte código:

01. move_bounce_all(false);

Nesta linha, estamos dizendo para a bola rebater no objeto em que ele está colidindo. O “False” é um parâmetro dizendo se é para utilizar uma detecção de colisão precisa ou não. Como as formas geométricas são simples, então não precisa usar um método de alta precisão. Feche o editor de código e dê um “Ok” nas propriedades e podemos testar agora. Agora, a bola deve estar rebatendo nas raquetes.
Pontuação

A cada rebatida que o jogador conseguir, vai render 5 pontos. Para contabilizar a pontuação, abra o código que você inseriu no evento Collision e adicione a linha 2 nele:

01. move_bounce_all(false);
02. score+=5;

A variável “score” é uma global, ou seja, pode ser acessada em qualquer parte do projeto e é responsável por guardar a pontuação do jogo. Pode fechar o editor de código e, a partir deste ponto, ele estará contabilizando a pontuação.

 

Mostrando a Pontuação

Pontos, saúde, munição e outros elementos geralmente são desenhados na camada GUI (Graphical User Interface). A camada GUI não faz parte do jogo em si, mas sim uma camada que ficará sempre na frente do jogo, muito útil para inserir as informações que o jogador venha precisar.

Para exibir a pontuação no GUI, vamos abrir as propriedades do objeto “obj_bola” e clicar em “Add Event”. Clique no evento “Draw” e selecione a opção “Draw GUI”:

Na aba “Score”, tem o ícone “Draw Score” (). Clique e arraste para dentro e vão abrir as configurações. Altere o campo “x” para 240 e o caption para “Pontos:”. A configuração vai ficar assim:

E está pronto! Teste agora e verá que a pontuação está sendo exibida no topo da tela.

 

Conclusão

No tutorial de hoje vimos dois conceitos. O primeiro é o de colisão, que no GameMaker é considerado como um evento, e usamos o comando “move_bounce_all” para rebater a bola. Também vimos a utilidade da variável global “score”, que serve para guardar a pontuação do jogador, e aprendemos a exibir o score em um evento “Draw GUI”. No próximo tutorial, vamos concluir o nosso gameplay básico do jogo, adicionando as flores no jogo. Não perca!

Thalisson Christiano de Almeida

Formado em Ciência da Computação (UDESC). Foi Programador da Céu Games e professor do Técnico em Informática do SENAI-SC. Atualmente, trabalha na empresa By Seven. Já foi jogador de xadrez e praticou kung-fu, ambos por 4 anos. Hoje é praticante do Jiu-jitsu, esperando que não fique nos 4 anos. Não tem preferência de tipos de jogos em especifico, variando desde jogos casuais de Facebook até jogos mais hardcore.