Tutorial Plataforma

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Tutorial Plataforma

Mensagem por Need 90 em Qua 29 Fev 2012, 13:22

Tutorial plataforma completa
Precisaremos dos seguintes objetos :
  • obj_player
  • obj_playerM
  • obj_solido
  • obj_hud

As sprites são as seguintes :
Download clique Aqui

Agora crie as sprites de acordo com a lista abaixo :
-------Nome-------------Sprite
  • Player Parado ----- spr_player_para
  • Player Andando --- spr_player_anda
  • Player Pulando ---- spr_player_pula
  • Player Caindo ----- spr_player_cai
  • Player Morrendo --- spr_player_morre

  • Bloco Solido ------- spr_solido

  • Hud Player -------- spr_hud


Objeto player
No create coloque :
Código:
chao=true      //Não está no chão
cai=false      //Não está caindo
dir=""        //Direção
image_speed=0.3//Velocidade da imagem
pu=10          //Altura to pulo
chao=true - Não está no chão
cai=false - Não está caindo
dir="" - Direção
image_speed - Velocidade da animação
pu - Altura do pulo

No alarm[0]
Código:
cai=true chao=true
cai=true - Está caindo
chao=true - Não está no chão

No step :
Código:
if place_free(x,y+1)//Se tiver 1 pixeil livre abaixo
{gravity=1}        //Gravidade é 1
else{              //Se não
gravity=0}          //Gravidade é 0


if keyboard_check(vk_right)                              //Se direita for precionada
{if place_free(x+4,y){                                    //Se tiver 4 pixeis livres a direita
x+=4 dir="dirr"}                                          //Anda 4 pixeis e anima a sprite
else{                                                    //Se não                 
dir="di"}                                                //Ele fica parado e imagem muda pra imagem parada
} else {if keyboard_check_released (vk_right){dir="di"}}  //Se não ele checka se foi solta a tecla e muda pra imagem parada


if keyboard_check(vk_left)                                //Mesmo de cima mas para esquerda
{if place_free(x-4,y){x-=4 dir="esq"}else{dir="es"}
}else {if keyboard_check_released (vk_left){dir="es"}}


if keyboard_check_pressed(vk_up){                        //Se for precissado acima
if!place_free(x,y+2){vspeed=-pu}                          //E se tiver dois pixeis livres acima ele pula
cai=false chao=false alarm[0]=9}                          //Indica que não está no chão, não está caindo e aciona o alarm[0]
Explicação já no código.

No End Step :
Código:
//Troca de sprites

//#Andando direita e esquerda#\\
if dir="dirr" {sprite_index=spr_player_anda  image_xscale=1                //Se á variável for dirr muda a sprite
}else{                                                                      //Se não
if dir="esq" {image_xscale=-1 sprite_index=spr_player_anda }}              //Ele inverte a imagem

//#Parado direita e esquerda#\\
if dir="di" {sprite_index=spr_player_para image_xscale=1                    //Se á variável for di muda a sprite
}else{                                                                      //Se não
if dir="es" {image_xscale=-1 sprite_index=spr_player_para }}                //Ele inverte a imagem

//#Caindo e Pulando direita e esquerda#\\
if chao=false and dir="dirr" {sprite_index=spr_player_pula image_xscale=1  //Se não estiver no chão mas estiver andando, muda de sprite           
}else{                                                                      //Se não
if chao=false and dir="esq" {sprite_index=spr_player_pula image_xscale=-1}} //Inverte a imagem

if cai=true and dir="dirr" {sprite_index=spr_player_cai image_xscale=1      //Se estiver caindo mas estiver andando, muda de sprite
}else{                                                                      //Se não
if cai=true and dir="esq" {sprite_index=spr_player_cai image_xscale=-1}}    //Inverte a imagem

//#Pulando direita e esquerda#\\
if chao=false and dir="di" {sprite_index=spr_player_pula  image_xscale=1    //O mesmo de cima, mas se estiver parado.
}else{
if chao=false and dir="es" {sprite_index=spr_player_pula  image_xscale=-1}}

if cai=true and dir="di" {sprite_index=spr_player_cai image_xscale=1
}else{
if cai=true and dir="es" {sprite_index=spr_player_cai image_xscale=-1}}

Na colisão com o objeto solido :
Código:
//Código de colisão por... (não lembro, mas não é meu)
if vspeed > 0 and not place_free(x,y + vspeed){//***se a velocidade vertical for maior do que 0 e não tiver o mesmo valor da vel vertical abaixo...
move_contact_solid(direction,vspeed)//mover na direção do bloco, na direcçao e com a vel.vertical
}
vspeed = 0//***velocidade vertical = a 0(esta no chao)
chao=true cai=false //está no chão e não está caindo

Add Event > Other > Intersect Boundary :
Código:
x=xprevious //Volta 1 pixel
if y>=288 {instance_create (x,y,obj_playerM) //Se sair por baixo cria o player morto
instance_destroy()} //Destroi


Terminamos o nosso player, vamos terminar o resto, vá no objeto solido e marque o mesmo como solido, e adicione a sprite do obj_solido.

obj_playerM
No create :
Código:
vspeed=-14                //Pula um pouco
hspeed=choose(1,2,-1,-2)  //Escolhe uma velocidade horizontal
gravity=1                //Gravidade é 1

E no outside room do obj_playerM :
Código:
global.v-=1  //Diminui as vidas
sleep=500    //Espera 500 steps
room_restart()//Recomeça a room


Hud
Game start :
Código:
global.v=3 //Vidas
E no draw :
Código:
//Draw Sombra
draw_sprite_ext(sprite_index,image_single,view_xview+2,view_yview+2,image_xscale,image_yscale,image_angle,c_black,0.6)

//Draw Hud
draw_sprite_ext(sprite_index,image_index,view_xview,view_yview,1,1,image_angle,image_blend,image_alpha)
draw_set_color(c_white)
draw_set_font(fnt_fixed)
draw_text (view_xview+14,x+3,"x"+string(global.v))

Na room coloque o tamanho de :
Width : 625
Height : 289

Coloque os objetos na room e teste.

Download para quem não conseguiu : Clique Aqui
Ps : Os códigos (menos o de colisão) foram feitos por mim.

Need 90

Ranking : Nota B
Número de Mensagens : 787
Data de inscrição : 16/01/2012
Notas recebidas : D+A+B
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://need90games.blogspot.com.br

Voltar ao Topo Ir em baixo

Re: Tutorial Plataforma

Mensagem por Thyago em Qua 29 Fev 2012, 13:35

.Baixei sua engine,tem bug,se você colocar uma parede ao encostar nela o player não pula.

Thyago

Ranking : Nota B
Número de Mensagens : 1092
Idade : 30
Data de inscrição : 24/08/2009
Notas recebidas : D+B+B+C+A
Reputação : 31
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   :

Voltar ao Topo Ir em baixo

Re: Tutorial Plataforma

Mensagem por Need 90 em Qua 29 Fev 2012, 14:02

Thyago escreveu: .Baixei sua engine,tem bug,se você colocar uma parede ao encostar nela o player não pula.

Obrigado por avisar, adicionei uma mask na engine, se alguém tiver problemas é só criar uma mask para o player.

Need 90

Ranking : Nota B
Número de Mensagens : 787
Data de inscrição : 16/01/2012
Notas recebidas : D+A+B
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://need90games.blogspot.com.br

Voltar ao Topo Ir em baixo

Re: Tutorial Plataforma

Mensagem por Conteúdo patrocinado Hoje à(s) 01:53


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

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