1 [Tutorial][Isométrico] Parte 2 - Blocos Flutuante e Plataformas Móveis (POR JV JUSTINO) 20/11/11, 09:09 am
HenRyqUéè
Administrador
Avaliador
Helper
Nome: [Isométrico] Parte 2 - Blocos Flutuante e Plataformas Móveis
Descrição: Como fazer blocos que flutuam e plataformas que se movimentam
Nível: Intermediário
Requerimentos: GM8 Lite/Pro
Olá a todos!
Como prometido, aqui está o segundo tutorial sobre jogos Isométricos. Neste tutorial será ensinado como fazer Blocos flutuantes, ou seja, blocos que ficam parados no ar, fazendo com que o player possa passar por baixo dele, e Plataformas móveis, platarformas que podem se locomover levando o player sobre ela.
Vamos começar!
Se ainda não viu a primeira aula, Clique Aqui.
Crie um objeto chamado obj_float. Coloque nele a sprite spr_block e a mask
mask_block, e como Parent coloque o objeto obj_block.
No evento Create coloque:
z=32;
Define a altura do bloco.
depth=-y-z/3
Define a profundidade, relacionando a posição y com a altura.
Agora no evento Step, coloque:
Se o player estiver acima do bloco ou abaixo dele, ele não será sólido, permitindo o player caminhar sobre ou abaixo dele. Se o player estiver ao lado do bloco, ele será sólido.
E no evento Draw coloque:
Desenha a sprite do objeto, diminuindo a posição y pela altura, e adicionando 16, que é o tamanho total do objeto.
Bom, agora que o bloco flutuante está feito, vamos configurar o player para atravessá-lo quando estiver em baixo:
No evento de colisão com o obj_block coloque:
Se o player estiver abaixo do bloco, e colidir com ele enquanto pula, ele irá voltar ao chão.
E está pronto o bloco flutuante. Para fazer outros blocos flutuantes com alturas diferentes, é só seguir os procedimentos do tutorial, somente alterando a altura. Lembrando que ela deve ser divisível a 16.
Crie uma sprite e chame-a de spr_platform. Carregue a imagem:
Crie um objeto e chame-o de obj_platform. Coloque nele a sprite spr_platform e a mask mask_block.
No evento Create coloque:
z=32;
Define a altura da plataforma.
hspeed=2
Define a velocidade horizontal.
vspeed=-1
Define a velocidade vertical.
No evento Step coloque:
Define se a plataforma será sólida ou não, conforme a altura do player, e calcula a profundidade.
Adicione um evento de colisão com o obj_block, e nele coloque:
Inverte as velocidades horizontal e vertical, fazendo a plataforma andar na direção oposta.
E no evento Draw coloque:
Desenha a sprite conforme as posições x e y e a altura.
Agora que a plataforma foi feita, vamos configurar o player:
Adicione o evento de colisão com o obj_platform, e nele coloque:
if(z>=other.z)
{
zland=other.z;
hspeed=other.hspeed;
vspeed=other.vspeed;
}
Se estiver sobre a plataforma, ele irá se mover conforme a hspeed e a vspeed da plataforma.
if(z>=other.z-40 && z {
zspeed=-4;
zspeed-=zgravity;
}
Se estiver abaixo dela e colidir durante o pulo, ele voltará ao chão.
Pronto! A plataforma está feita e o player está configurado! Mas... ele não se mexe!
É por que ele foi programado para não se mover se nenhuma tecla for pressionada. Para isso não acontecer, temos que mudar um código.
No evento Step do obj_player, haverá um código como esse:
Substitua por este:
Assim, ele não ficará parado se estiver sobre a plataforma.
E assim fica pronta a plataforma. Você pode criar plataformas seguindo os mesmos procedimentos, alterando a altura e a direção.
Quando você coloca os blocos flutuantes e móveis na room, eles dão a impressão de estarem no chão. Para evitar que isso aconteça, você pode usar uma sombra. Crie uma sprites e chame-a de spr_shadow, e carregue esta imagem:
Para desenhá-la, vá ao evento Draw do bloco, e coloque o código:
Ele desenhará a sombra abaixo do bloco, nas suas posições x e y, desconsiderando a altura do bloco.
E chega ao fim este tutorial. Espero que tenham gostado! Qualquer dúvida, crítica ou sugestão é só falar!
さようなら!
Descrição: Como fazer blocos que flutuam e plataformas que se movimentam
Nível: Intermediário
Requerimentos: GM8 Lite/Pro
Olá a todos!
Como prometido, aqui está o segundo tutorial sobre jogos Isométricos. Neste tutorial será ensinado como fazer Blocos flutuantes, ou seja, blocos que ficam parados no ar, fazendo com que o player possa passar por baixo dele, e Plataformas móveis, platarformas que podem se locomover levando o player sobre ela.
Vamos começar!
Se ainda não viu a primeira aula, Clique Aqui.
1- Blocos Flutuantes
Crie um objeto chamado obj_float. Coloque nele a sprite spr_block e a mask
mask_block, e como Parent coloque o objeto obj_block.
No evento Create coloque:
- Código:
z=32;
depth=-y-z/3;
z=32;
Define a altura do bloco.
depth=-y-z/3
Define a profundidade, relacionando a posição y com a altura.
Agora no evento Step, coloque:
- Código:
if(obj_player.z>=z || obj_player.z<z-16) solid=1
else solid=true
Se o player estiver acima do bloco ou abaixo dele, ele não será sólido, permitindo o player caminhar sobre ou abaixo dele. Se o player estiver ao lado do bloco, ele será sólido.
E no evento Draw coloque:
- Código:
draw_sprite(sprite_index,image_index,x,y-z+16)
Desenha a sprite do objeto, diminuindo a posição y pela altura, e adicionando 16, que é o tamanho total do objeto.
Bom, agora que o bloco flutuante está feito, vamos configurar o player para atravessá-lo quando estiver em baixo:
No evento de colisão com o obj_block coloque:
- Código:
if(z>=other.z-40 && z<other.z)
{
zspeed=-2;
zspeed-=zgravity;
}
Se o player estiver abaixo do bloco, e colidir com ele enquanto pula, ele irá voltar ao chão.
E está pronto o bloco flutuante. Para fazer outros blocos flutuantes com alturas diferentes, é só seguir os procedimentos do tutorial, somente alterando a altura. Lembrando que ela deve ser divisível a 16.
2- Plataformas Móveis
Crie uma sprite e chame-a de spr_platform. Carregue a imagem:
Crie um objeto e chame-o de obj_platform. Coloque nele a sprite spr_platform e a mask mask_block.
No evento Create coloque:
- Código:
z=48;
hspeed=2;
vspeed=-1;
z=32;
Define a altura da plataforma.
hspeed=2
Define a velocidade horizontal.
vspeed=-1
Define a velocidade vertical.
No evento Step coloque:
- Código:
if(obj_player.z>=z || obj_player.z<z-16) solid=false
else solid=true
depth=-y-z/3;
Define se a plataforma será sólida ou não, conforme a altura do player, e calcula a profundidade.
Adicione um evento de colisão com o obj_block, e nele coloque:
- Código:
hspeed=-hspeed;
vspeed=-vspeed;
Inverte as velocidades horizontal e vertical, fazendo a plataforma andar na direção oposta.
E no evento Draw coloque:
- Código:
draw_sprite(sprite_index,image_index,x,y-z+16)
Desenha a sprite conforme as posições x e y e a altura.
Agora que a plataforma foi feita, vamos configurar o player:
Adicione o evento de colisão com o obj_platform, e nele coloque:
- Código:
if(z>=other.z)
{
zland=other.z;
hspeed=other.hspeed;
vspeed=other.vspeed;
}
if(z>=other.z-40 && z<other.z)
{
zspeed=-4;
zspeed-=zgravity;
}
if(z>=other.z)
{
zland=other.z;
hspeed=other.hspeed;
vspeed=other.vspeed;
}
Se estiver sobre a plataforma, ele irá se mover conforme a hspeed e a vspeed da plataforma.
if(z>=other.z-40 && z
zspeed=-4;
zspeed-=zgravity;
}
Se estiver abaixo dela e colidir durante o pulo, ele voltará ao chão.
Pronto! A plataforma está feita e o player está configurado! Mas... ele não se mexe!
É por que ele foi programado para não se mover se nenhuma tecla for pressionada. Para isso não acontecer, temos que mudar um código.
No evento Step do obj_player, haverá um código como esse:
- Código:
else
{
vspeed=0;
hspeed=0;
}
Substitua por este:
- Código:
else if(!place_meeting(x,y,obj_move))
{
vspeed=0;
hspeed=0;
}
Assim, ele não ficará parado se estiver sobre a plataforma.
E assim fica pronta a plataforma. Você pode criar plataformas seguindo os mesmos procedimentos, alterando a altura e a direção.
3- Bônus
Quando você coloca os blocos flutuantes e móveis na room, eles dão a impressão de estarem no chão. Para evitar que isso aconteça, você pode usar uma sombra. Crie uma sprites e chame-a de spr_shadow, e carregue esta imagem:
Para desenhá-la, vá ao evento Draw do bloco, e coloque o código:
- Código:
draw_sprite(spr_shadow,0,x,y);
Ele desenhará a sombra abaixo do bloco, nas suas posições x e y, desconsiderando a altura do bloco.
E chega ao fim este tutorial. Espero que tenham gostado! Qualquer dúvida, crítica ou sugestão é só falar!
さようなら!