Autor:João Neto
A partir desta segunda aula até a quinta vamos ver como o
GML pode mover objetos, validar seu posicionamento e validar a colisão do mesmo com outros objetos.
Qualquer desenvolvedor de jogos sabe que a colisão é a verificação mais importante de um jogo. Com ela, podemos saber quais são os limites de uma casa (em jogos de RPG), se o tiro do inimigo nos atingiu (validação de dano) ou ainda se não estamos “flutuando” no ar (uso da colisão para validar gravidade).
Esses são alguns exemplos, mas a colisão é algo extremamente importante e está em quase tudo em um jogo.
Para aprendermos sobre movimentação, primeiro um pouco de quadrantes. No GML( como na maioria das aplicações de desenvolvimento) temos que o tipo de medida da tela se dá atravéz do lado esquerdo(
Left) e o lado de cima(
Top). Tendo estes lados como referencia, e usando a forma como a matemática trata os gráficos, temos que todo e qualquer movimento para cima ou para baixo desloca-se no Eixo
Y, e todo e qualquer movimento que se desloca para a esquerda ou para a direita desloca-se no Eixo
X.
O canto superior esquerdo da tela é nosso ponto de partida. Nesse lugar,
X = Y = 0, ou seja, o ponto inicial do quadrante da tela é onde X e Y são iguais a 0 (zero).
Então, pra quem sabe matemática está fácil, se eu quiser deslocar um objeto da da esquerda para a direita, eu tenho que incrementar X, se for o contrário eu tenho que Decrementar. A mesma coisa acontece com o Y, se eu quiser deslocar o objeto para baixo eu incremento, se quiser delocar para cima eu decremento. No Game Maker, todo e qualquer objeto já possui por padrão as propriedades X e Y. O que faremos para movê-lo será incrementar ou decrementar seus valores atuais de X e Y, usando as setas do teclado. Lembra-se do Script de Setas da 1º lição? Podemos usá-lo para mover um objeto, bastando apenas alguns pequenos ajustes. Vamos lá.
STEP 1 – CRIANDO O SPRITEVocê pode aproveitar o mesmo objeto usado na 1º lição, a diferença será que ele precisará de um sprite para que possa ser visto. Você com certeza já deve saber como fazer um sprite, então eu vou apenas mostrar rapidamente como criar um “cubo” para ser usado no nosso experimento.
• Clique na pasta Sprites com o botão direito ->
Add Sprite• Nomeie-o para
Box• Clique no botão Center -> ele ficará com os valores 16 x 16
• Desmarque a opção Transparent
• Clique no botão Edit Sprite
• No menu Images, Clique em Colorize...
• Coloque um valor maior que 100 e clique em OK
• Clique no fechar da janela
• Clique em OK
Nosso Sprite de teste está pronto. Agora, lembra-se do objeto que criamos para testar o script na 1º lição? Vamos usá-lo aqui.
STEP2 – CONFIGURANDO O OBJETO• Acesse o objeto
• Mude seu nome para
Caixa• No botão Sprite selecione o Sprite Box
• Marque a opção Solid
• Na opção Mask, selecione novamente o Sprite Box
• Clique em OK.
Agora, vem a modificação do script. Acesse o Script Setas.
STEP 3 – CONFIGURANDO O SCRIPTModifique-o para que fique assim:
if(keyboard_check(vk_left))
{Caixa.x -= 5;}
if(keyboard_check(vk_right))
{Caixa.x += 5;}
if(keyboard_check(vk_up))
{Caixa.y -= 5;}
if(keyboard_check(vk_down))
{Caixa.y += 5;}
O que fizemos aqui??Obserque que estamos acessando o Objeto
Caixa através do seu nome, e modificando as propriedades X e Y de acordo com o tipo de tecla pressionada. Vale ressaltar que o GML é Case Sensitive, ou seja,
caixa é diferente de
Caixa que é diferente de
CAIXA, então, cuidado ao digitar.
Para finalizar, se ainda não houver uma instancia do objeto Caixa na room criada de teste, adicione a instancia e rode o jogo.
Ao rodar, experimente apertar e segurar as teclas direcionais, em uma direção, em outra, ou duas ao mesmo tempo (para cima e para esquerda, por exemplo).