Pages

terça-feira, 5 de julho de 2011

TUTORIAL 19


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/3Define 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
else solid=true

-ExplicandoSe 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
{
    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=2Define a velocidade horizontal.vspeed=-1Define a velocidade vertical.No evento Step coloque:
CÓDIGO:
if(obj_player.z>=z || obj_player.z
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;

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

-ExplicandoDesenha 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
{
    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.

0 comentários:

Postar um comentário