sexta-feira, 23 de outubro de 2015

Código para fazer personagem descer e subir rampas

Olá galera, vou postar aqui pra vocês que me pedem muito os códigos para fazer o personagem subir e descer rampas em jogos de plataforma.

Primeiro começa criando um script

Dentro desse script vão funcionar dois tipos de funções.
1. Subir
2. descer

Para subir vamos usar essa sequencia:
Ele vai detectar uma colisão por pixel a baixo do personagem e empurra-lo para cima dependendo da inclinação da plataforma.

Código:
  if place_free(x+velo,y-1){x+=velo y-=1}
 else
 if place_free(x+velo,y-2){x+=velo y-=2}
  else
 if place_free(x+velo,y-3){x+=velo y-=3}
   else
 if place_free(x+velo,y-4){x+=velo y-=4}
   else
 if place_free(x+velo,y-5){x+=velo y-=5}
   else
 if place_free(x+velo,y-6){x+=velo y-=6}
   else
 if place_free(x+velo,y-7){x+=velo y-=7}
   else
 if place_free(x+velo,y-8){x+=velo y-=8}
   else
 if place_free(x+velo,y-9){x+=velo y-=9}
   else
 if place_free(x+velo,y-10){x+=velo y-=10}
   else
 if place_free(x+velo,y-11){x+=velo y-=11}
   else
 if place_free(x+velo,y-12){x+=velo y-=12}
   else
 if place_free(x+velo,y-13){x+=velo y-=13}
   else
 if place_free(x+velo,y-14){x+=velo y-=14}
   else
 if place_free(x+velo,y-15){x+=velo y-=15}
   else
 if place_free(x+velo,y-16){x+=velo y-=16}
   else
 if place_free(x+velo,y-17){x+=velo y-=17}
   else
 if place_free(x+velo,y-18){x+=velo y-=18}
   else
 if place_free(x+velo,y-19){x+=velo y-=19}
   else
 if place_free(x+velo,y-20){x+=velo y-=20}

Para descer vamos usar essa outra aqui:
É importante ter um código para manter o personagem grudado na plataforma enquanto estiver descendo. sem esse código vai parecer que o personagem está em gravidade 0.
Ele faz a mesma coisa que o de cima, detecta o valor a baixo do objeto em pixel e faz com que ele fique firme na plataforma enquanto desce.

Código:
 if vvele>=0{
if place_free(x,y+1) and !place_free(x,y+2){y+=1 no_ar=false}
if place_free(x,y+2) and !place_free(x,y+3){y+=2 no_ar=false}
if place_free(x,y+3) and !place_free(x,y+4){y+=3 no_ar=false}
if place_free(x,y+4) and !place_free(x,y+5){y+=4 no_ar=false}
if place_free(x,y+5) and !place_free(x,y+6){y+=5 no_ar=false}
if place_free(x,y+6) and !place_free(x,y+7){y+=6 no_ar=false}
if place_free(x,y+7) and !place_free(x,y+8){y+=7 no_ar=false}
if place_free(x,y+8) and !place_free(x,y+9){y+=8 no_ar=false}
if place_free(x,y+9) and !place_free(x,y+10){y+=9 no_ar=false}
if place_free(x,y+10) and !place_free(x,y+11){y+=10 no_ar=false}
if place_free(x,y+11) and !place_free(x,y+12){y+=11 no_ar=false}
if place_free(x,y+12) and !place_free(x,y+13){y+=12 no_ar=false}
if place_free(x,y+13) and !place_free(x,y+14){y+=13 no_ar=false}
if place_free(x,y+3){no_ar=true}
if !place_free(x,y+3){if vvele>0{no_ar=false}}}

Agora para adicionar isso ao personagem do jogo. é bem simples! 
Adicione as duas variáveis no create:

Ela vai apenas definir a quantidade de pixels na colisão e dar o valor para subir e descer. 

E para finalizar adicione no step o script da rampa! 
Provavelmente seu código já está funcionando, porem se aparecer bugs de colisão com a plataforma, do personagem não subir ou ficar preso nela...
Para resolver isso basta apenas colocar o script do step no topo de todas as outras funções adicionadas no seu personagem. 
Para que não tenho conflitos com o sistema de gravidade.
Espero que isso tenha ajudado vocês! ^^ 



3 comentários: