Esta aula será um pouco mais complexa do que as anteriores, já que devemos atribuir várias condições a nossos objetos.
Pegue um Café, uma boa almofada, abra o projeto anterior e preste muita atenção para não se perder.
Nesta aula vamos trabalhar apenas com a Folha de Eventos ou eventSheet e muito pouco com cenario1. O eventSheet tem por objetivo adicionar eventos a outros objetos, tais como Keyboard, Player, Inimigos e tudo mais.
Clique na aba Event Sheet 1, para selecionar a Folha de Eventos.
Clique sobre a opção Add Event Sheet, Selecione o Keyboard e Clique em Next.
Selecione a opção On Key pressed, este evento permite selecionar qual tecla vai ativar o evento, em seguida clique em Next.
Clique no botão Click to Choose, em seguida pressione a tecla direcional cima, por fim, clique em OK e Done.
Vamos fazer o Respaw (criar) o projetil, mas antes adicione o Behavior Bullet ao nosso Spriteprojetil.
Voltando ao Event Sheet, Clique em Add Action, de um duplo clique em player, no módulo Misc selecione Spawn another object e clique em Next.
Clique em Object, selecione o Player, em Imagepoint, adicione 1, pois este é o ponto que deve fazer o Respaw do projetil, onde definimos o Image Point na aula passada, para finalizar clique em Done.
Agora entenda, quando o jogador pressionar a tecla direcional cima, o Player vai criar o objeto projetil, este projetil está com o Behavior Bullet que segue uma direção única.
Rode o jogo e veja o resultado, note que o projetil é instanciado, porém não vai para cima e sim para a direita.
Para solucionar o problema, basta alterar o Anglo após ser criado, mas antes volte ao palco, selecione o projetil e defina a altura e largura com os mesmos valores.
Como vamos fazer a rotação, se a altura e largura não forem iguais, ao criar o projetil parecerá que o projetil está deitado, então deixe quadrado.
Voltando novamente ao Event Sheet, ainda no evento Keyboard, clique novamente em Add action, selecione o projetil, de um duplo clique sobre Set angle, insira -90 e clique em Done.
Teste o jogo para ver o resultado.
Com o projetil funcionando, devemos agora destruir os inimigos que forem colididos pelo projetil, se houver colisão então destrói o inimigo e o projetil.
Para isto, clique em Add Event, de um duplo clique em inimigo1, selecione no módulo Collisions o evento On collision with another object e clique em Next.
No botão Click to choose, selecione o projetil e clique em Done.
Este evento verifica a colisão do inimigo com o projetil, se houver a colisão então execute X ação.
Vamos agora destruir o inimigo1 e o bulet que houve a colisão, então clique em Add action, correspondente ao inimigo1.
Selecione novamente o inimigo1, clique em Next, selecione a ação destroy e clique em Done.
Faça o mesmo processo para destruir o projetil, o resultado deverá ser igual mostrado abaixo.
Execute o jogo para ver o resultado.
Com os inimigos sendo destruídos, execute os mesmos processos para o inimigo2, inimigo3 e inimigo4.
Sua folha deve ficar como a mostrada abaixo.
Embora não seja visível, o projetil está saindo da tela, e isto requer processamento, muito pouco, mas requer, para destruir o projetil quando sair da tela, basta executar o mesmo processo que fizemos para o inimigo, para o objeto colisao, pois ele tem uma parte que fica na parte superior da tela, afinal, este é o motivo do objeto existir.
Se o projetil colidir com o objeto colisao, então destrói o projetil.
Nos resta agora exibir a quantidade de inimigos abatidos, para isto devemos cria uma variável, a cada inimigo destruído incrementos 1 a ela.
Clique com o botão direito do mouse em qualquer área vazia do Event Sheet em seguida clique em Add global variable.
A janela Newglobalvariable deve aparecer, apenas atribuía o nome para inimigos no campo name e clique em OK.
Vamos adicionar uma ação para o inimigo 1, então clique em Addaction, selecione System e clique em Next.
No módulo Global & local variables, selecione Addto e clique em Next.
Na janela seguinte, em Variable deverá aparecer selecionado a variável inimigos, já que temos apenas ela declarada, defina 1 em value e clique em Done.
Faça o mesmo processo para os demais inimigos, de forma fácil você pode clicar na ação, apertar CTRL+C para copiar a ação, clicar no em ações no próximo inimigo e apertar CTRL+V para colar.
Desta forma, a cada inimigo abatido, será incrementado o valor 1 a variável inimigos.
Vamos exibir no Textpontuacao a quantidade de inimigos abatido.
Adicione um novo evento, clique em System, selecione Everytick e clique em OK.
O evento EveryTick é executado a cada frame, se compreende inglês, isto é obvio.
Adicione uma nova condição, selecione o objeto pontuacao, clique em Next, selecione a opção Settext e clique novamente em Next.
A ação Settext, permite inserir um texto ao objeto.
No campo Text, insira: “inimigos: ” & inimigos, sendo o valor a frente de & corresponde a variável, para finalizar clique em Done.
Teste o jogo para ver o resultado.
Agora só nos resta inserir o The End para quando abatermos todos inimigos.
Temos no total 28 inimigos, o que devemos fazer agora, é voltar ao cenario1 que é o palco, inserir uma nova Layer, importar o Sprite The End, atribuir o initialVisibility para invisible, assim ao iniciar o game o Sprite não é carregado.
No EventSheet devemos a cada frame verificar se a variável inimigo é igual a 28, se for mudamos o estado de visão do Sprite The End e destruímos o Player.
A teoria esta dita, vamos a prática, crie uma nova Layer com o nome de final.
Ajuste o Sprite ao centro da tela, note na imagem que foi ocultado a LayerPlayers, para melhor ajuste e visibilidade do resultado final
Em Properties, no módulo InitialVisibility mude para invisible e Name para theend.
Voltando mais uma vez ao EventSheet, adicione um novo evento, Selecione System, everyTick e clique em Done.
Devemos adicionar um outro evento, clique com o botão direito do mouse sobre o Evento que acabamos de criar em seguida clique em Addanothercondition.
Clique em System, Next selecione Comparevariable e clique em Next.
Em Variable, estará selecionado a variável inimigos, adicione 28 em value, este é a quantidade total de inimigos.
Em Comparison, você deve informar a condição, neste caso não alteramos pois o valor padrão já é Equalto, ou seja igual (==).
Adicione uma nova ação para nosso evento, selecione o objeto theend, Setvisible, clique em Next, em Visibility selecione Visible por fim clique em Done.
Para esta mesma condição, destrua o Player, não queremos que ele fique em cena ao final do Game.
Teste o jogo para ver o resultado final.
IMPORTANTE: Sempre que for testar o game, clique no botão Play, atualizar a página não carregará as novas definições alteradas.
Terminamos aqui nossa quarta aula, em caso de dúvidas deixe nos comentários, na próxima e última aula vamos criar a sonorização do Game.
Até a próxima e bons estudos!