Como fazer um jogo de Plataforma

Como criar jogo de plataforma
Versão do Game Maker:Todas
Nivel de Experiencia: Novato

1º Pegando o Material

Sprites:
spr_play: Um menu que siginifica pra você jogar
spr_quit: Significa para você sair do jogo
spr_player: O player será o seu personagem

spr_bloco = sprite do bloco, onde o player irá pisar

Objetos:

obj_Player = o seu personagem, coloque a sprite spr_parado neste objeto
obj_Bloco = objeto onde o seu personagem irá pisar, coloque a sprite spr_bloco.

2º - Programando...

Vá no obj_Player, para começar-mos a programar:

Primeiro, vamos ter que criar as variáveis de estado:

Clique em Add Event e selecione o Create, e vá na aba code, clique e arraste a ação "Execute a piece of code":

Código:
image_speed=0.27; //velocidade da sprite
parado=true; //está parado
andando=false; //não está andando
nochao=true; //está no chão
direcao=0; //está virado para a direita
valocidade=4 //Velocidade


Agora, vamos definir outras coisas, como gravidade, consigurar variáveis,etc...

Vá novamente em Add Event e selecione o Step:

Código:
//INDICA A DIREÇÃO
if image_xscale=1 then {direcao=0} //DIREITA
if image_xscale=-1 then {direcao=1} //ESQUERDA

//INDICA SE ESTÁ PARADO
if parado=true then {sprite_index=spr_parado} //SE A VARIÁVEL PARADO FOR VERDADEIRA, MUDA PARA A SPRITE SPR_PARADO

//DEFINIÇÕES DE GRAVIDADE
if place_free(x,y+1)
{
gravity = 0.75
}
else
{
gravity = 0
}

//VELOCIDADE DE QUEDA
if (vspeed > 10) {vspeed = 10}

//PULO
if keyboard_check_pressed(vk_up) and nochao = true
{
nochao=false
vspeed=-16;
}
if keyboard_check_pressed(vk_up) and vspeed < 0 {vspeed /=2}

if nochao=false //SE A VARIÁVEL NOCHAO FOR FALSA. OU SEJA, SE NÃO ESTIVER NO CHÃO
{
sprite_index=spr_pula_cai //MUDA PARA A SPRITE SPR_PULA_CAI


Agora, vamos fazer o movimento do seu personagem:

Código:
f place_free(x-velocidade,y) x -= velocidade //Usei este código para não dar bug na colisão
parado=false //Não está parado
sprite_index=spr_andando //Muda para a sprite spr_andando
image_xscale=-1 //Muda a direção para a esquerda


Agora, selecione a opção Right:

Código:
if place_free(x+velocidade,y) x += velocidade //Usei este código para não dar bug na colisão
parado=false //Não está parado
sprite_index=spr_andando //Muda para a sprite spr_andando
image_xscale=1 //Muda a direção para a direita


Agora, faça como antes, só que na opção :

Código:
//CASO NÃO ESTEJA PRESSIONANDO NENHUMA TECLA, ELE FICA PARADO
parado=true


Bom, está quase tudo pronto, só falta a colisão com o bloco.
Então, vá no objeto obj_Bloco e marque a opção "Solid", e desmarque a "Visible".
Agora, volte para o obj_Player, e vá em Add Event e selecione a opção Collision, e depois clique no obj_Bloco:

Código:
//CONTATO SÓLIDO
move_contact_solid(direction,8)
vspeed=0
nochao=true //SE ESVITER COLIDINDO COM O BLOCO, A VARIÁVEL NOCHAO É VERDADEIRA


Agora, em "mask" coloque a sprite spr_mascara

Pronto, agora coloque os blocos, o personagem na room e teste!

Próxima parte: Criando Inimigos

5 comentários

Unknown em 16 de dezembro de 2013 às 11:57

onde é a opçao right?

eduardo silva em 23 de abril de 2014 às 11:41

no inicio vc indicou o seguinte: "obj_Player = o seu personagem, coloque a sprite spr_parado neste objeto "

o que seria o "spr_parado"? algum sprite de personagem, que eu encontro na biblioteca de sprites do game maker?

eduardo silva em 23 de abril de 2014 às 11:43

no inicio vc indicou o seguinte: "obj_Player = o seu personagem, coloque a sprite spr_parado neste objeto "

o que seria o "spr_parado"? algum sprite de personagem, que eu encontro na biblioteca de sprites do game maker?

Anônimo em 24 de abril de 2019 às 09:15

"spr_parado" ou "spr_andando" entre outros, são sprites do personagem, animação e tals, se vc ainda n tiver sprites de animação, troque e coloque o nome que vc deu para o sprite do player

Unknown em 2 de abril de 2020 às 20:09


________eu fiz tudo direito mas quando fui rodar o jogo apareceu esse erro, oq é___________________________________
############################################################################################
FATAL ERROR in
action number 1
of Step Event0
for object obj_player:

Variable obj_player.spr_stop(100007, -2147483648) not set before reading it.
at gml_Object_obj_player_StepNormalEvent_1 (line 4) - if parado=true then {sprite_index=spr_stop}
############################################################################################