Primeiro Jogo #2 - Detectar Objetos, Vida e Pontos

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Primeiro Jogo #2 - Detectar Objetos, Vida e Pontos

Mensagem por dharrison em Ter 23 Set 2014, 11:33

Crie seu Primeiro Jogo Completo #2
- Detectar Objetos, Vida, Pontos e Efeitos -


Título: Crie seu Primeiro Jogo Completo #2 - Detectar Objetos, Vida, Pontos e Efeitos
Versão do GM: Game Maker 8.0, 8.1 PRO  GM8 e também GMS:Standard
Dificuldade: Fácil
Requer Extensões: Não.
Requer DLLs: Não.
Tags: Primeiro Jogo, Top Down, GML, Detectar Objetos, Colisões, Vida, Pontos.


Introdução

Eai pessoal, belezinha? sorrindo

Continuando a série de Aulas para a criação de um game completo Top Down, vamos ver algumas formas de se Detectar e Coletar Itens, e outras coisitas mais...

Antes de começarmos é importante que você já tenha uma noção básica sobre o Game Maker e GML, que você poderá aprender acessando essas aulas do Alex FC. Além disso, através deste tópico gracioso você poderá baixar e jogar o jogo que criaremos durante as aulas, é legal para se conhecer tudo que iremos criar (no momento da criação dessa primeira aula o jogo estava na versão 1.0, pode ser que quando você ler esse tutorial o jogo possua mais funções).

Além disso essa é a parte #2 da criação, caso você não tenha feito a parte #1, CLIQUE AQUI


Criando Itens e Efeitos

Para continuarmos, vamos criar objetos para os itens coletáveis, como Moedas, Comida e Pedras Preciosas, e colocá-los dentro de um Grupo chamado Pontos e Vida, nenhum dos Objetos será sólido e deve ser atribuída a Máscara Mask (quadrado preto) a todos.

Para criar novos Grupos clique com o botão direito do Mouse e selecione Create Group.

Como já tratamos desse básico na Aula #1, segue uma imagem para referência apenas:


Para criarmos os Efeitos, usaremos objetos com sprites. Esse não é o melhor método, mas como nosso game é simples, ele funcionará bem. Repita os passos acima, exceto o passo da Máscara, pois nossos Efeitos não terão Colisão. O Resultado deve ser semelhante a isso:



Por hora vamos deixar todos esses Objetos sem programação alguma.


Definindo Novas Variáveis no obj_explo

Agora vamos adicionar duas variáveis ao obj_explo, serão 2 variáveis globais, sendo uma para controlar a vida e a outra os pontos. Esta que controla os pontos será alterada no futuro para evitar problemas, mas por hora não é necessário se preocupar com isso. Siga os passos:

1. Clique duas vezes no Piece of Code  Action Code  dentro do evento Create Event Create do obj_explo
2. Adicione o seguinte código abaixo do que fizemos na aula anterior:
Código:
//Aula 02
global.vida=30 //Define a Vida para 30 (3 corações, futuramente)
global.pontos=0 //Define os pontos para 0 ao começar a Room, isso será alterado futuramente

Digite exatamente como está acima, lembrando que tudo que vem depois do // é comentário e deverá ficar colorido (geralmente verde). A explicação do uso de cada variável está no próprio código.

Segue a imagem para referência:


IMPORTANTE: Esse código foi definido no Evento CREATE Event Create do Objeto, isso significa que ele Define variáveis que não existam antes, porém toda vez que o Objeto for Criado (Create né...) essas variáveis serão redefinidas, além disso o Create acontece antes mesmo da Room carregar completamente. Por isso futuramente corrigiremos o global.pontos=0, porque se permanecer assim a cada nova fase o placar irá zerar novamente.

Dessa forma definimos as Novas Variáveis que nosso obj_explo usará.


Detectando Itens e Coletando

Existem várias formas de se fazer isso, mas no nosso game não criaremos Colisões: usaremos outra função do GM chamada distance_to_object(). O código será quase o mesmo em todos os nossos itens.

1. Abra o obj_10 e clique sobre Add Event > Step Event Step e então arraste um Piece of Code  Action Code  para o campo Actions
2. O Editor se abrirá novamente, insira nele este código:
Código:
//COLISÕES
if distance_to_object(obj_explo)=0 //Se a distancia do Item para o Player for 0...
{
global.pontos+=10 //O Player ganha 10 Pontos extras
instance_create(x,y-8,obj_10pts) //É criado o Efeito 10pts um pouco acima do Item
instance_destroy() //O Item é "coletado" (na vdd é destruído)
}

Bem simples não é? Agora é só adicionar o mesmo código nos outros objetos, mudando apenas a quantidade de Pontos e o Efeito criado. Segue a lista de como configurar cada um:

Banana: global.pontos+=5; global.vida+=10; instance_create(x,y-8,obj_5pts)
Maça: global.pontos+=5; global.vida+=20; instance_create(x,y-8,obj_5pts)
obj_50: global.pontos+=50; instance_create(x,y-8,obj_50pts)
obj_100: global.pontos+=100; instance_create(x,y-8,obj_100pts)
obj_1000: global.pontos+=1000; instance_create(x,y-8,obj_1000pts)
obj_moeda: global.pontos+=5;

Eu acredito que não seja legal criar um Efeito para as Moedas, pois existem muitas no cenário, isso criaria uma grande poluição visual.

Tendo configurado todos objetos, já podemos ganhar pontos e aumentar a vida do jogador.


Animando os Efeitos

Nossa animação para os efeitos de Itens serão bastante simples: elas irão subir por aproximadamente 1 segundo e desaparecer.

1. Abra o obj_5pts e clique sobre Add Event > Create  Event Create  e então arraste um Piece of Code Action Code  para o campo Actions
2. O Editor se abrirá novamente, insira nele este código:
Código:
vspeed=-1.5 //Velocidade para cima de 1.5
alarm[0]=20 //Define o Alarm[0] para 20 frames/steps
/*sound_play(snd_pontos) futuramente tocará um som, estamos deixando o código como comentário para não dar bugs no game, mas também para não nos esquecermos dele.*/
3. Adicione um Alarm: Add Event > Alarm Event Timer  
4. Arraste para o campo Actions um Destroy Instance  Action Destroy

Nos passos 3 e 4 nós adicionamos um Evento Alarm, que é como um despertador: ao Alarm chegar a 0 (lembrando que definimos ele como 20 Steps), algo acontece.
No caso adicionamos o Botão Destroy Instance, que é a mesma coisa que adicionar um Piece of Code e digitar instance_destroy() dentro dele, mas o botão acabou sendo mais prático sorrindo

Agora repita o mesmo processo para outros Efeitos, porém no obj_1000pts substitua sound_play(snd_pontos) por sound_play(snd_diamante)

Com isso nossos Efeitos estarão completos.


Testando a Primeira Fase

Depois de configurar tudo, vamos testar.
Abra a Room0 e coloque mais paredes e distribua os itens conforme desejar. Após terminar, salve o Projeto como Aula02 e clique no Play Verde para testar. Tudo deve estar funcionando corretamente.

Segue uma imagem de referência:



Fim da Aula #2

Com isso finalizamos a Engine da Aula #2, peguei um pouco mais leve dessa vez para que você se acostume com a rotina de criar objeto > configurar > testar. Na próxima aula adicionaremos inimigos simples e poderemos começar a atirar :C:

Obrigado por acompanhar essa aula e comente para dar uma força pro tópico!

E lembre-se:  Dúvidas? Comente!


Última edição por dharrison em Ter 23 Set 2014, 11:45, editado 2 vez(es)

dharrison

Ranking : Nota B
Número de Mensagens : 1243
Idade : 25
Data de inscrição : 04/02/2009
Notas recebidas : A - B
Reputação : 89
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: Primeiro Jogo #2 - Detectar Objetos, Vida e Pontos

Mensagem por Mateus O de Andrade em Ter 23 Set 2014, 11:37

E ai dharryson,
Cara, já estava na hora!! Estava ansioso pela continuação de seu tutorial.
Obrigado pela postagem e boa sorte com seu trabalho!

Mateus O de Andrade

Ranking : Nota D
Número de Mensagens : 399
Idade : 31
Data de inscrição : 25/03/2014
Reputação : 37
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Primeiro Jogo #2 - Detectar Objetos, Vida e Pontos

Mensagem por dharrison em Ter 23 Set 2014, 11:44

@Mateus
Vlw o apoio cara, e agora estou me organizando melhor, o tutorial continuará pelo menos semanalmente Happy

Caso seja possível adicionar mais de um tutorial por semana eu farei

dharrison

Ranking : Nota B
Número de Mensagens : 1243
Idade : 25
Data de inscrição : 04/02/2009
Notas recebidas : A - B
Reputação : 89
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: Primeiro Jogo #2 - Detectar Objetos, Vida e Pontos

Mensagem por Conteúdo patrocinado Hoje à(s) 06:09


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum