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}}}
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! ^^
Este comentário foi removido pelo autor.
ResponderExcluireu fiz tudo que você mostrou e meu personagem ta meio que flutuando
ResponderExcluirnão funciona ele fica voando
ResponderExcluir