[Tutorial]-Primeiro jogo com GML (Aula 01)

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

[Tutorial]-Primeiro jogo com GML (Aula 01)

Mensagem por glasdou em Qui 02 Jan 2014, 21:19


  • Título: Primeiro jogo com GML (Aula 01)
  • Versão do GM: Game Maker Studio(qualquer versão)
  • Dificuldade: iniciante
  • Link para download da Engine: [Download]Engine
  • Link para download dos Recursos: [Download]Recursos
  • Requer Extensões: Não
  • Requer DLLs: Não
  • Tags: Tutorial-Game-Maker-Studio-Primeiro-Jogo-Plataforma.





Olá gente bonita!O Puxa Saco!!
Hoje vim trazer um tutorial para iniciantes, é sobre como criar um jogo de plataforma com GML.
Bom chega de papo e vamos ao trabalho. O mandão

Esta é a primeira aula, então vai ser bem simples.

1° Abra o GMS, crie um novo projeto e dê o nome de Primeiro Jogo(opcional)
depois clique no botão Create a Sprite ,vá até a pasta recursos (que você faz download logo acima),sprites, maze-platform e procure a sprite "explorer_right_strip8", dê o nome de spr_explorador.
Agora faça a mesma coisa mas dessa vez a sprite vai ser a "explorer_jumpright" e o nome vai ser spr_no_ar.
agora abra novamente a spr_explorador e coloque a origem em 16x31 (x = 16, y = 31),clique em modify mask  e depois em full image 
faça a mesma coisa para a spr_no_ar
logo apos crie  uma sprite translucida, eu fiz esta , e dê o nome  de spr_bloco.
pronto terminamos...
o que? ja terminamos?
...com as sprites. hehe

agora vamos criar os objetos.
clique em Create an object , dê o nome de  obj_explorador e coloque a sprite spr_explorador, agora vamos programar ele.
No evento create coloque o seguinte codigo
Código:
///variaveis
pulo = 1  //variavel que controla os pulos
depois no evento step coloque este codigo
Código:
///código step
//gravidade
if place_free(x,y + 4){ // se o explorador estiver no ar
    gravity  = 1 //tem gravidade
    sprite_index = spr_no_ar // o sprite é o spr_no_ar
}
else{  //se não
    gravity = 0 //não tem gravidade
    pulo = 1
   sprite_index = spr_explorador //o sprite é o spr_explorador
}
//movimentos
if place_free(x + 4,y) and keyboard_check(ord("D")){ //se estiver desocupado a posiçao 4 pixels a direita do explorador e a tecla "D" estiver pressionada...
        x += 4 //...o explorador se move 4 pixels para a direita
        image_xscale = 1 //o sprite esta virado para a direita
}
else if place_free(x - 4,y) and keyboard_check(ord("A")){ //se estiver desocupado a posiçao 4 pixels a esquerda do explorador e a tecla "A" estiver pressionada...
        x -= 4 //...o explorador se move 4 pixels para a esquerda
        image_xscale = -1 //o sprite esta virado para a esquerda
}
else { // se não
    image_index = 0 // se nao estiver pressionada nenhuma tecla o explorador para de mover os pés
}

//pulo
if keyboard_check_pressed(ord('W'))and (pulo <= 2){ // se estiver presionada a tecla "W" e o explorador deu menos de 2 pulos...
    vspeed = -12 //o explorador pula
    pulo += 1 //e registra que ele deu mais 1 pulo
}
a função place_free() checa se determinado lugar esta desocupado.


a função keyboard_check() checa se alguma tecla(Key) esta sendo pressionada ex: enquanto você presionar "D" o explorador vai ficar andando, quando voce soltar ele para.


e a função keyboard_check_pressed() checa apenas se uma tecla(key) foi pressionada, e não se esta sendo pressionada ex:se você ficar pressionando a tecla "W" o explorador vai pular apenas 1 vez, mas se você pressionar,soltar e voltar a pressionar ele vai pular 2 vezes.

agora vamos criar um objeto chamado obj_bloco, a sprite dele vai ser a spr_bloco(a sprite translucida que criamos anteriormente),coloque ele como sólido e pronto.


volte ao obj_explorador, adicione um evento collision com obj_bloco e coloque o seguinte codigo
Código:
///código collision
move_contact_solid(direction,12) //evita um bug(uma travada estilo "escadinha")
vspeed = 0
a função move_contact_solid() faz com que o obj_explorador retorne pra posição 12 pixels antes de ocorrer a colisão com o obj_bloco evitando um bug sinistro ,retire ela se quiser saber qual é o bug.


crie uma room, encha de blocos, coloque o obj_explorador no centro dela e teste.


eu  fiz esta 


até a proxima aula 


Abraços

glasdou

Número de Mensagens : 95
Idade : 17
Data de inscrição : 21/11/2013
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial]-Primeiro jogo com GML (Aula 01)

Mensagem por fredcobain em Qua 15 Jan 2014, 10:34

Bem explicado. Bem comentado. Aprovado!

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial]-Primeiro jogo com GML (Aula 01)

Mensagem por vitorfernandes13 em Qua 15 Jan 2014, 12:27

Olá parabéns pelo tutorial, se ate eu entendi (quase tudo) qualquer um entendi  Razz , pf não pare, estou começando a aprender o Game Maker, mas, tenho algumas dúvidas, eu não encontrei esse negócio de origem, e modify mask, vc poderia me mostrar com imagem onde se encontra?? :3

Eu não entendi o por quê de criar a variável pulo, e usá-la no else no código abaixo  Suspect 

agora abra novamente a spr_explorador e coloque a origem em 16x31 (x = 16, y = 31),clique em modify mask  e depois em full image 
faça a mesma coisa para a spr_no_ar
logo apos crie  uma sprite translucida, eu fiz esta , e dê o nome  de spr_bloco.
pronto terminamos...
o que? ja terminamos?
...com as sprites. hehe


Código:
///código step
//gravidade
if place_free(x,y + 4){ // se o explorador estiver no ar
    gravity  = 1 //tem gravidade
    sprite_index = spr_no_ar // o sprite é o spr_no_ar
}
else{  //se não
    gravity = 0 //não tem gravidade
    pulo = 1
   sprite_index = spr_explorador //o sprite é o spr_explorador
}
//movimentos
if place_free(x + 4,y) and keyboard_check(ord("D")){ //se estiver desocupado a posiçao 4 pixels a direita do explorador e a tecla "D" estiver pressionada...
        x += 4 //...o explorador se move 4 pixels para a direita
        image_xscale = 1 //o sprite esta virado para a direita
}
else if place_free(x - 4,y) and keyboard_check(ord("A")){ //se estiver desocupado a posiçao 4 pixels a esquerda do explorador e a tecla "A" estiver pressionada...
        x -= 4 //...o explorador se move 4 pixels para a esquerda
        image_xscale = -1 //o sprite esta virado para a esquerda
}
else { // se não
    image_index = 0 // se nao estiver pressionada nenhuma tecla o explorador para de mover os pés
}
E eu poderia fazer o código da gravidade assim??

Código:

//gravidade
if place_free(x,y + 4){ // se o explorador estiver no ar
    y + 4 //ele poderá pular
    gravity  = 1 //tem gravidade
    sprite_index = spr_no_ar // o sprite é o spr_no_ar
}
else{  //se não
    gravity = 0 //não tem gravidade
    pulo = 1
   sprite_index = spr_explorador //o sprite é o spr_explorador
}
E pela minha lógica o explorador so poderia pular 2 vezes, porque fala que se pulo for menor ou igual a 2, a variável pulo receberá mais um, ou seja ficará pulo = 2 e se o explorador pular de novo ficará pulo = 3 sendo assim, ele não poderia pular de novo... Razz


Código:

//pulo
if keyboard_check_pressed(ord('W'))and (pulo <= 2){ // se estiver presionada a tecla "W" e o explorador deu menos de 2 pulos...
    vspeed = -12 //o explorador pula
    pulo += 1 //e registra que ele deu mais 1 pulo
}

E, apenas uma confirmação, você colocou gravity = 1, quando ele está pulando para que a gravidade o puxe para baixo??

vitorfernandes13

Ranking : Nota C
Número de Mensagens : 284
Data de inscrição : 11/01/2014
Notas recebidas : C
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial]-Primeiro jogo com GML (Aula 01)

Mensagem por Conteúdo patrocinado Hoje à(s) 00:57


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