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
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
onde é a opçao right?
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?
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?
"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
________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}
############################################################################################