Neste tutorial, vamos criar os movimentos nas raquetes, de forma que sejam controlados pelo mouse. Também colocaremos a bola de tênis em jogo, fazendo com que ela percorra a tela.
Para fazer tudo isto, precisamos aprender como usar um Evento.
Eventos
Eventos são funcionalidades que respondem quando o usuário ou outros programas interagem com o jogo. Por exemplo, quando aperto uma tecla ou movo o mouse, um evento é disparado para que eu possa aplicar, no jogo, uma resposta a tal estímulo.
Vamos ver isto na prática. No projeto, abra o objeto “obj_raquete” que criamos na aula passada. Note que existe uma área apenas dedicada aos eventos:
É nessa parte que definimos todos os eventos que um objeto vai reagir. Vamos fazer as nossas raquetes serem controladas pelo mouse. Conforme ele se move, as raquetes vão se movendo junto. Para isto, clique em “Add Event” e vão aparecer as diversas opções de eventos.
Agora, ao lado direito da lista de eventos, temos as listas de ações vazias e, ao lado esquerdo, vários ícones que representam tipos de ações. É com esses recursos que programaremos os eventos.
O GameMaker disponibiliza duas maneiras de programar: uma é usando o sistema Drag and Drop, onde você clica num comando e o arrasta para dentro da lista e configura. A outra é programando no código. O interessante é que é possível misturar as formas de programar, pois algumas coisas são mais práticas usando as funcionalidades prontas, outras são mais fáceis programando.
Antes de entrar na programação, vamos entender o que vamos fazer: a cada “Step”, nós vamos atualizar a posição das raquetes de acordo com a posição do mouse. As raquetes horizontais vão acompanhar horizontalmente o mouse, ou seja, vão acompanhar o eixo X da tela. As raquetes verticais acompanharão o mouse no eixo Y.
Agora, vamos a programação: primeiro clique na guia “Control” e procure pelo ícone Code (). Então clique e arraste para a nossa lista de ação. Este elemento permite inserir código diretamente nos eventos, e vai abrir o editor de códigos do GameMaker:
01. if (image_angle==0) {
02. x = mouse_x;
03. }else{
04. y = mouse_y;
05. }
Aqui podemos usar as propriedades image_angle, x e y sem especificar o objeto, porque na parte superior do editor, onde diz “applies to” está marcando como self, então o GameMaker vai interpretar que se o próprio objeto tem tais propriedades, será tratado como tal. Caso não seja uma propriedade, será tratado como uma variável local. Portanto, cuidado, pois o GameMaker não acusará erro se você digitar uma variável errada, a não ser em casos de refêrencia de objetos.
Ponto de Referência
Durante o teste, repare que existem peculiaridades nele. Primeiro, é o alinhamento do mouse com as raquetes. Observe que o ponteiro do mouse sempre está alinhado em uma das pontas das raquetes. Outra peculiariedade é que as raquetes não estão simétricas, sendo que a da direita e a de baixo estão mais próximas da borda do que as outras.
Criando a bola
Para criar a bola vai ser bem simples agora: primeiro baixe esta imagem da bola ou faça a sua própria:
Agora crie um objeto usando o sprite da bola como referência. Nomeie como “obj_bola”. A configuração vai ficar assim:
Agora vamos programar o comportamento da bola. Adicione um evento “Create”. Eventos do tipo “Create” são usados quando queremos definir algo quando o objeto for instanciado, ou seja, vai ser a primeira coisa que o objeto fará. Uma vez criado, procure na guia “Move” o ícone “Move Free” () e arraste para a lista. A configuração vai ser a seguinte:
01. direction = random_range(45,135);
02. speed = 4;
Clique em OK em tudo e agora falta somente instanciar a bola no cenário.
Para fazer a inserção, abra a Room “rm_level1” e na aba “Objects” insira a bola bem no centro do cenário.
Conclusão
Hoje aprendemos a criar eventos e vimos dois tipos deles: “Step”, que é ativado a cada ciclo de processamento e o “Create”, que é ativado apenas uma vez, quando um objeto é instanciado em uma Room.
Vimos também como programar um evento e que existem duas formas de programar: usando o Drag and Drop e através do código. Cada uma delas tem vantagens e desvantagens, uma vez que lógicas complexas são mais fáceis de programar no código, enquanto algumas funções básicas para jogos já estão disponíveis nos diversos ícones. Então, no próximo tutorial, vamos ver como realizar a colisão entre os dois objetos.