Tuto c/ engine de Plataforma - Abaixar, morrer com animação...

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

Qualidade Tuto c/ engine de Plataforma - Abaixar, morrer com animação...

Mensagem por Mannoroth em Qua 16 Mar 2011, 21:46

Tutorial: fazendo um jogo de plataforma contendo pulo, abaixar-se, correr, pegando moedas até chegar em 100 formando uma vida, cair penhasco perdendo uma vida com animação(morrendo).
Tenha os seguintes sprites do personagem:
Spoiler:
spr_par_dir ->personagem parado virado para direita
spr_par_esq ->personagem parado virado para esquerda
spr_and_dir -> person. andando virado para direita
spr_and_esq ->person. andando virado para esquerda
spr_aba_dir --> pers. abaixado vir. p/ direita
spr_aba_esq --> pers. abaixado vir. p/ esquerda
spr_cor_dir ->pers. correndo virado p/ direita
spr_cor_esq -> pers. correndo virado p/ esquerda
spr_pul_dir -> pers. pulando vir. p/ direita
spr_pul_esq ->pers. pulando vir. p/ esquerda

tenha tbm um sprite pro chao e outro pras moedas(spr_moeda). E um spr_morto, que é do personagem ao morrer mas será colocado em outro objeto neste tuto.

Crie um objeto para ser o player, chamarei de obj_player. No create dele coloque no code:

Código:
direita=true
andando=false
abaixado=false
pe_no_chao=true
varvelocidade=0
correndo=false
velocidade=5
global.moedas=0
global.vidas=2
O nosso objeto funcionara assim, as teclas acionarão variaves(tornar true ou false), dependendo da combinação de serem verdadeiras ou falsas, o step definirá o sprite do objeto.

Agora some um evento keyboard RIGHT e coloque:
Código:
direita=true
andando=true
x+=velocidade
E num evento keyboard LEFT coloque o code:
Código:
direita=false
andando=true
x-=velocidade
crie um event 'key press UP' e bote o code:
Código:
if gravity=0 && !place_free(x,y+1) && place_free(x,y-13)
{
  vspeed=-14;pe_no_chao=false
}
Crie um event keyboard DOWN e bote:
Código:
if pe_no_chao=true abaixado=true
e num event release keyboard DOWN bote:
Código:
abaixado=false
agora vamos para o step. No step bote o code:

Código:
if pe_no_chao=true {
if correndo=false {
if andando=true {if direita=true{sprite_index=spr_and_dir} else {sprite_index=spr_and_esq}}
else
{if abaixado=false {if direita=true{sprite_index=spr_par_dir} else {sprite_index=spr_par_esq} } else  {if direita=true{sprite_index=spr_aba_dir} else {sprite_index=spr_aba_esq} }}
}
else
{if direita=true{sprite_index=spr_cor_dir} else {sprite_index=spr_cor_esq}}
}
else {if direita=true{sprite_index=spr_pul_dir} else {sprite_index=spr_pul_esq}}

Agora vamos fazer o player acelerar no 'espaço' enquanto anda, até estar correndo.
Add um evento keyboard SPACE e bote o code:
Código:
if pe_no_chao=true and andando=true varvelocidade+=2
No Step do objeto adicione mais este code:
Código:
if varvelocidade<20 velocidade=5
if varvelocidade>=20 and varvelocidade<50 velocidade=6.6
if varvelocidade>=50 velocidade=10
if varvelocidade>80 varvelocidade=80
if varvelocidade<0 varvelocidade=0
if varvelocidade>=50 correndo=true else correndo=false

No release SPACE bote esse code:
Código:
varvelocidade=0
Com isso teremos que se o personagem já estiver andando, ao segurar espaço ele vai ganhando velocidade, ate correr. Dependendo da quantidade atual de varvelocidade(q so pode aumentar se vc tiver com player no cha) a velocidade aumenta.A variavel 'velocidade' é que controla o tanto que o player anda, pois ela esta no event keyboard RIGHT e LEFT dele. Ao soltar o espaço a varvelocidade volta a ser 0.

Num evento release LEFT bote isso:
Código:
andando=false
varvelocidade=0
E num evento release RIGHT bote de novo:
Código:
andando=false
varvelocidade=0
Assim soltando LEFT e RIGHT a 'velocidade' volta ser 5 (pois é menor que 20).
Crie um objeto pra ser o chao(com o devido sprite); marque ele como 'solid' e bote depht:10. No obj_player crie um evento colisao com o objeto chao e bote:
Código:
move_contact_solid(direction,10)
vspeed = 0
pe_no_chao = true

Agora vamos botar moedas, de modo que ao colidir com uma você a pegue e se chegar a 100 moedas você ganha uma vida e o nº de moedas voltam a 0.
Crie um obj_moeda, com o spr_moeda e na colisão com obj_player bote:

Código:
with self instance_destroy()
if !global.moedas=99 global.moedas+=1 else {global.moedas=0;global.vidas+=1}

Para ver o status da quantidade de moedas e vidas durante o jogo, crie um obj_status sem sprite, e bote no evento DRAW:
Código:
draw_text(x,y+20,global.moedas)
draw_text(x,y,global.vidas)
draw_sprite(spr_par_dir,image_index,x-16,y)
draw_sprite(spr_moeda,image_index,x-16,y+20)
Para o obj_status seguir a room bote isso no step dele:
Código:
x=view_xview+40
y=view_yview+40


Para programar que o obj_player morra ao cair, voltando ao ponto inicial e perdendo uma vida, bote mais este code no step do obj_player:
Código:
if y>490 {instance_change(obj_morto,1)}
Mas crie um obj_morto, botando spr_morrendo, no event create dele bote o code:
Código:
vspeed=-20
gravity=1
alarm[0]=40
No step dele bote o code:
Código:
global.vidas-=1
if global.vidas=0 {game_restart()} else {x=280;y=280;instance_change(obj_player,1)}

o 490 aqui é o nivel que o player nao pode ultrapassar, pois se passar volta para o ponto x=96 y=280 que é o ponto inicial do obj_player no meu jogo. Esses 3 valores você pode alterar para os que quiserem. Quando o nº de vidas for menor q 0, o jogo todo reinicia nesse caso.
Por fim, vamos programar para o obj_player nao ultrapassar os limites x do cenário. Para isso, no mesmo code adicione estas linhas:
Código:
if x<10 x=10
if x>2600 x=2600
sao os limites da minha engine de exemplo, voce altera com os valores q quiser.

Links para Download da engine
http://www.4shared.com/file/4bFCQYII/EnginePlataf-correr_abaixar_mo.html

LEFT e RIGHT para mover, segure espaço enquanto anda para correr, aperte DOWN para se abaixar. Pegue 100 moedas para ganhar uma vida. Se cair vc vê animação morrendo e perde uma vida.
Se gostou do tutorial, aumente a reputação nesse post, vlw e bom uso.


Última edição por Mannoroth em Seg 02 Maio 2011, 21:29, editado 1 vez(es)

Mannoroth

Ranking : Nota D
Número de Mensagens : 836
Idade : 26
Data de inscrição : 05/10/2010
Notas recebidas : D+D
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: Tuto c/ engine de Plataforma - Abaixar, morrer com animação...

Mensagem por Convidad em Qui 17 Mar 2011, 13:41

o download ta com erro mas o tutorial ta 10

Convidad
Convidado


Voltar ao Topo Ir em baixo

Qualidade Re: Tuto c/ engine de Plataforma - Abaixar, morrer com animação...

Mensagem por Lauro em Qui 17 Mar 2011, 14:37

Manoroth, baixei a sua engine, muito boa^^
Acho que pra mim ela nao seria muito util, mais para os novatos, pois eu ja tenho uma ideia de GML.
Porém achei um bug na engine: ao pular,e colidir a parte de cima do player com a parte de baixo, ele gruda.
Tomei a liberdade e criei uma mask no player.
Por favor, em nome dos novatos peço que arrume a mask e refizesse o link de download.

Lauro

Ranking : Nota D
Número de Mensagens : 854
Idade : 19
Data de inscrição : 09/11/2010
Notas recebidas : C+D
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.google.com

Voltar ao Topo Ir em baixo

Qualidade Re: Tuto c/ engine de Plataforma - Abaixar, morrer com animação...

Mensagem por Mannoroth em Sex 18 Mar 2011, 20:57

Lauro, me diz especificamente o que vc mudou que eu altero e boto no post. Ae aproveito e boto um link 4shared e outro megaupload.
Ae galera, pra quem gostou eu pedi pra aumentar a reputação no post(clicando no + q fica perto do meu avatar), merece né?
E se quiserem deem sugestoes pra acrescentar mais coisas q jogos de plataformas geralmente tem.

Mannoroth

Ranking : Nota D
Número de Mensagens : 836
Idade : 26
Data de inscrição : 05/10/2010
Notas recebidas : D+D
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: Tuto c/ engine de Plataforma - Abaixar, morrer com animação...

Mensagem por sonic luan em Seg 21 Mar 2011, 07:33

gostei otimo tutorial.

sonic luan

Ranking : Nota C
Número de Mensagens : 1003
Idade : 17
Data de inscrição : 28/01/2011
Notas recebidas : C-D-A-C
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://sonicmaker.forumeiros.com/memberlist

Voltar ao Topo Ir em baixo

Qualidade Re: Tuto c/ engine de Plataforma - Abaixar, morrer com animação...

Mensagem por Luiz A. Oliveira em Seg 21 Mar 2011, 07:44

tutorial daora, mas podia usar o image_xscale em vez de criar tantas sprites.

Luiz A. Oliveira

Ranking : Nota C
Número de Mensagens : 914
Idade : 19
Data de inscrição : 08/09/2010
Notas recebidas : D-B-C
Reputação : 5
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://luizgm.blogspot.com/

Voltar ao Topo Ir em baixo

Qualidade Re: Tuto c/ engine de Plataforma - Abaixar, morrer com animação...

Mensagem por Juliano Santos em Dom 27 Nov 2011, 14:01

Tem um bug quando o personagem colide com o bloco ele fica grudado nele.

Juliano Santos

Número de Mensagens : 140
Idade : 24
Data de inscrição : 11/04/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://canaldamusica.musicblog.com.br/

Voltar ao Topo Ir em baixo

Qualidade Re: Tuto c/ engine de Plataforma - Abaixar, morrer com animação...

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


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