Rpg Maker BRasil
RPG Maker Brasil - RMBR

Seja Bem vindo ao Forúm! Faça seu cadastro e desfrute sobre o mundo do RPG Maker!
P.S.: PARA MELHOR VIZUALIZAÇÃO DO FORUM SEM BUGS, RECOMENDO QUE USEM O MOZILLA FIREFOX OU O GOOGLE CHROME!
Rpg Maker BRasil

Evoluindo cada vez mais!


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

HenRyqUéè

avatar
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.

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;
-Explicando-

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
-Explicando

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)
-Explicando-
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;
}
-Explicando-

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;
-Explicando-

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;
-Explicando-

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;
-Explicando

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)
-Explicando

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;
}
-Explicando-

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!

さようなら!

http://rmbr.forumeiros.com/

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

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