Código de movimento personagem

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

Código de movimento personagem

Mensagem por GAMEREVIL em Sab 23 Maio 2009, 06:02

Olá.
Estou pedindo ajuda para concluir uma movimentação.
Pelo tutorial do forum, consegui realizar varios movimentos.
Faltando abaixar e olhar para cima.

parado DR, ES/ OK
andando DR,ES/OK
pulando DR,ES/OK
..................................falta
abaixado DR,ES (se soltar (vk_down) volta parado.
cima (se soltar (vk_up) volta parado

Quando tentei fazer com teclado, não consegui pular, agora com código, não consigo
fazer personagem abaixar e olhar cima.

codigo que estou estudando é esse:

Código:
if (place_free(x,y+1)) //Checa se 1 pixel abaixo está vazio, ou seja, não tem chão.
{gravity=0.45; noar=true;
//Coloca valor na gravidade e define a variável noar para true, ou seja, o personagem não está no chão.
} else
 //Se a expressão place_free for falsa, ou seja, tenha chão embaixo:
 {gravity=0; noar=false; //Gravidade se torna zero e a variável noar se torna false, ou seja, o personagem está no chão.
 }

//Definiões de pulo
if (keyboard_check_pressed(ord("X"))) && ! (place_free(x,y+1)) //Checa se a tecla de direção cima foi pressionada e se NÃO tem um pixel livre abaixo.
{
vspeed=-5; noar=true; //Se for verdade, velocidade vertical se torna 5 negativo e a variávell noar se torna true, ou seja, o personagem NÃO está no chão.
}

if (vspeed>12) //Checa se a velocidadevertical do personagem possui um valor maior que 12.
vspeed=12; //Se tiver, o valor se torna 12. Isso serve para que o personagem não ultrapasse grandes velocidades verticais, podendo causar bugs no jogo.

if (keyboard_check(vk_left)) && ! (keyboard_check(vk_right)) && (place_free(x-3,y)) //Checa se a tecla de direção esquerda está sendo pressionada, se a tecla direita NÃO está sendo pressionada e se tem 3 pixels de espaço à esquerda.
{x-=3; lado=0; andando=true; parado=false; //Caso a expressão acima seja verdadeira, o personagem se move 3 pixels a esquerda, virá para a esquerda de acordo com a variável lado, a variável andando se torna true para indicar que o personagem está andando e a variável parado se torna false, ou seja, o personagem NÃO está parado.
}

if (keyboard_check(vk_right)) && ! (keyboard_check(vk_left)) && (place_free(x+3,y)) //Mesmo de cima, só que dessa vez, checamos se a tecla de direção direita está sendo pressionada, se a tecla de direção esquerda NÃO está sendo pressionada e se tem 3 pixels à direita livre.
{x+=3; lado=1; andando=true; parado=false; //A mesma coisa do evento anterior. A única coisa que muda é que aqui o personagem se move 3 pixels a direita e a variável lado se torna 1, ou seja, ele vira pra direita.
}

if ! (keyboard_check(vk_left)) && ! (keyboard_check(vk_right)) //Checa se a tecla direita e a tecla esquerda não estão sendo precionadas.
{andando=false; parado=true; //Caso seja verdade, a variável andando se torna false, ou seja, o personagem NÃO está andando. E a variável parado se torna true, ou seja, o personagem está parado.
}

if keyboard_check(vk_down)
{x-=3; lado=0; abaixando=true; parado=false;
}

if keyboard_check(vk_down)
{x+=3; lado=1; abaixado=true; parado=false;
}

if ! (keyboard_check(vk_down)) && !
{abaixado=false; parado=true;
}

if keyboard_check(vk_up)
{x+=0; lado=1 cima=true; parado=false;
}

if ! (keyboard_check(vk_up));
{cima=false; parado=true;
}

//Sprites
if (noar==false) //Checa se o personagem está no ar.

{
if (cima=true) && (lado==1)
sprite_index=robo_cima;
}
if (andando=true) && (lado==1) //Checa se o personagem está andando e se ele está virado para a direita.
{
sprite_index=robo_andandoDR; //Se sim, a sprite dele se torna a sprite do personagem andando para a direita.
}
if (andando=true) && (lado==0) //Checa se o personagem está andando e se ele está virado para a esquerda.
{
sprite_index=robo_andandoES; //Se sim, o sprite dele se torna a sprite do personagem andando para a esquerda.
}
if (abaixado=true) && (lado==1) //**Checa se o personagem esta abaixado e se ele esta virado para direita.
{
sprite_index=robo_abaixadoDR; //se sim, a sprite dele se torna abaixado direito.
}
if (abaixado=true) && (lado==0) //checa se a sprite dele esta abaixado esquerda.
{
sprite_index=robo_abaixadoES; // se sim a sprite se torna abaixado esquerda.
}
if (andando==false) && (parado==true) && (lado==1) //Se o personagem não está andando, se o personagem está parado e está virado para a direita:
{
sprite_index=robo_paradoDR; //Se sim, a sprite dele se torna a sprite do personagem parado para a direita.
}
if (andando==false) && (parado==true) && (lado==0) //Se o personagem não está andando, está parado e está virado para a esquerda:
{
sprite_index=robo_paradoES; //Se sim, a sprite dele se torna o sprite do personagem parado para a esquerda.
}
if (andando==false) && (abaixado==true) && (lado==1) //**Se o personagem não está andando, se o personagem está abaixado e está virado para a direita:
{
sprite_index=robo_abaixadoDR; //**Se sim, a sprite dele se torna a sprite do personagem abaixado para a direita.
}
if (andando==false) && (abaixado==true) && (lado==0) //**Se o personagem não está andando, está abaixado e está virado para a esquerda:
{
sprite_index=robo_abaixadoES; //**Se sim, a sprite dele se torna o sprite do personagem abaixado para a esquerda.

}

else //Caso o personagem NÃO esteja com os pés no chão:
{
if (vspeed>0) || (vspeed<0) && (lado==1) //Se ele está pulando ou caindo e está virado para a direita:
{
sprite_index=robo_pulandoDR; //O sprite do personagem se torna o sprite dele pulando para a direita.
}
if (vspeed>0) || (vspeed<0) && (lado==0) //Se o personagem está pulando ou caindo e está virado para a esquerda:
{
sprite_index=robo_pulandoES; //O sprite do personagem se torna o sprute dele pulando para a esquerda.
}
}


Obrigado

GAMEREVIL

Número de Mensagens : 11
Idade : 41
Data de inscrição : 14/05/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://gamerevil.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Código de movimento personagem

Mensagem por GAMEREVIL em Sab 23 Maio 2009, 15:36

Bom para resumir, queria explicação de como inseri os códigos:
spr_baixo esquedo e direito. (fixo sem se mover quando abaixado e quando soltar tecla spr_parado)
spr_cima (fixo)

.

GAMEREVIL

Número de Mensagens : 11
Idade : 41
Data de inscrição : 14/05/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://gamerevil.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Código de movimento personagem

Mensagem por Eudes - Hyo em Ter 02 Jun 2009, 10:58

Vc quer segurar a Tecla DOWN e o char ficar agachado ?

if (keyboard_check(vk_down)) && ! (keyboard_check(vk_up))
{agachado=true; parado=true}

if (agachado=true) && (lado==1)
{
sprite_index=spr_Char_agachado_dir ; //Agachado e Direita.
}

if (agachado=true) && (lado==0)
{
sprite_index=spr_Char_agachado_esq; //Agachado e Esquerda.
}


É isso ?

Eudes - Hyo

Ranking : Nota B
Número de Mensagens : 513
Idade : 32
Data de inscrição : 02/06/2009
Notas recebidas : E + B+B
Reputação : 27
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Código de movimento personagem

Mensagem por Kevin em Ter 02 Jun 2009, 19:12

acho que tem uma forma mais simples!!!


assim

tenta esse

if (keyboard_check(vk_down))
{agachado=true; parado=true}

if (agachado=true) && (lado==1)
{
sprite_index=spr_Char_agachado_dir ; //Agachado e Direita.
}

if (agachado=true) && (lado==0)
{
sprite_index=spr_Char_agachado_esq; //Agachado e Esquerda.
}



if (keyboard_check_released(vk_down))
{agachado=false; parado=true}

if (agachado=false) && (lado==1)
{
sprite_index=spr_Char_parado_dir ; //Parado e Direita.
}

if (agachado=false) && (lado==0)
{
sprite_index=spr_Char_parado_esq; //Parado e Esquerda.
}


* código que você mostrou!!! - editado algumas coisas apenas..
* código que reefiz!!! - editado algumas coisas para voltar ao normal!!!
* suposições de: trocas de sprite que usei... troque estes amarelos pelo sprite dele parado!!!




Bem acho que é isso... se deu ou não deu certo nos fale aqui Happy

Keké Games© Agradece Happy

Kevin

Ranking : Nota C
Número de Mensagens : 1166
Idade : 22
Data de inscrição : 14/11/2008
Notas recebidas : C - C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://www.programaCODM.webs.com/

Voltar ao Topo Ir em baixo

Re: Código de movimento personagem

Mensagem por GAMEREVIL em Qua 03 Jun 2009, 01:16

Valeu a ajuda!
.
Vou tentar aqui...
.

Ficou assim !!!
Funcionou.

Código:
//muda as sprites de acordo com a ação
if penochao = true {
//código anterior
if abaixado = false {
//código anterior
if parado = false
{
if direita = true {sprite_index = robo_andandoDR;} else {sprite_index = robo_andandoES;}
}
else
{
if direita = true {sprite_index = robo_paradoDR;} else {sprite_index = robo_paradoES;}
}
//código anterior
}
else
{
if direita = true {sprite_index = robo_abaixadoDR;} else {sprite_index = robo_abaixadoES;}
}
//código anterior
}else
{
if direita = true {sprite_index = robo_pulandoDR;} else {sprite_index = robo_pulandoES;}
}


Falta agora, olhar para cima!!! E se apertar cima (UP),o esqueda e direita tem que travar
.

GAMEREVIL

Número de Mensagens : 11
Idade : 41
Data de inscrição : 14/05/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://gamerevil.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Código de movimento personagem

Mensagem por Convickto em Qui 22 Abr 2010, 18:30

os codigos se escrevem assim mesmo? agachado=true ou false? é agachado mesmo?
tipo para eu fazer ele andar num objeto sólido, como faz? pq meu personagem tá travando no chão, ele só se movimenta no ar, mas quando encosta no chão ele fica parado, não vai pra lado nenhum!
Resumindo :
Como colocar o personagem no chão e faze-lo andar e pular? por favor me diga o que cada código faz pra eu ir aprendendo aos poucos. valeu!
Sou noob hoje, mas eu vou aprender(*eu acho...*)

Convickto

Número de Mensagens : 7
Idade : 66
Data de inscrição : 21/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://convickto.blogspot.com

Voltar ao Topo Ir em baixo

Re: Código de movimento personagem

Mensagem por Cainã em Qui 22 Abr 2010, 19:00

As variáveis podem ser escritas do jeito que a pessoa quiser. Quanto a sua duvida, este tópico pode esclarecer e existem tutoriais e engines no forum.

Cainã

Número de Mensagens : 1335
Idade : 22
Data de inscrição : 07/03/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://cai.na.tl/

Voltar ao Topo Ir em baixo

Re: Código de movimento personagem

Mensagem por Denis Lemos em Qui 22 Abr 2010, 19:27

Convickto escreveu:os codigos se escrevem assim mesmo? agachado=true ou false? é agachado mesmo?
tipo para eu fazer ele andar num objeto sólido, como faz? pq meu personagem tá travando no chão, ele só se movimenta no ar, mas quando encosta no chão ele fica parado, não vai pra lado nenhum!
Resumindo :
Como colocar o personagem no chão e faze-lo andar e pular? por favor me diga o que cada código faz pra eu ir aprendendo aos poucos. valeu!
Sou noob hoje, mas eu vou aprender(*eu acho...*)
Com o tempo você vai aprender o que cada código faz, mas se você quer aprender mais ligeiro, tem que dar uma olhada nessas aulas, foi por elas que eu aprendi !

http://www.gamemakerbrasil.com/game-maker-f36/aulas-de-game-maker-para-iniciantes-por-reddragon-t3425.htm

E aqui tem mais um monte de coisa, agora é só você ler bastante que não tem como não aprender, se eu consegui você também consegue, quando eu comecei era que nem você, não sabia nem oque era uma variável, mas se esforçando se consegue aprender !
Leia principalmente as aulas que estão fixadas no topo da página !
http://www.gamemakerbrasil.com/game-maker-f36/

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Código de movimento personagem

Mensagem por Adriel em Qui 22 Abr 2010, 20:00

Pessoal, tem um jeito muito mais simples. Veja bem, escreva no Event de olhar para cima :
Código:
if sprite_index=bonecoparadodireita //substitua pelo nome de sua sprite
{
sprite_index=bonecoolhandocimadireita //substitua pelo nome de sua sprite
hspeed=0
vspeed=0
}
if sprite_index=bonecoparadoesquerda //substitua pelo nome de sua sprite
{
sprite_index=bonecoolhandocimaesquerda //substitua pelo nome de sua sprite
hspeed=0
vspeed=0
}

E aí, funfou????
Se quiser saber mais coisas, basta me dizer king

Adriel

Número de Mensagens : 922
Idade : 18
Data de inscrição : 18/07/2009
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

È, esse reddragon é bom pra explicar!

Mensagem por Convickto em Dom 25 Abr 2010, 16:20

Cainã escreveu:As variáveis podem ser escritas do jeito que a pessoa quiser. Quanto a sua duvida, este tópico pode esclarecer e existem tutoriais e engines no forum.


Valeu pela dica, realmente me esforçando bastante(e descansando pra não ficar louco) eu to entendendo como isso funciona, mas não gosto de ficar copiando e colando os códigos, eu prefiro(apesar de ser mais demorado) olhar o código e depois escrever ele, assim ele fica impregnado no meu celebro...o problema é que toda vez que começo a entender como uma coisa funciona, eu me deparo com outra mais interessante, e outra, e outra...vou tentar me focar em um unico jogo até deixa-lo o melhor possivel, mas acho que to pegando o jeito!
agradeço pela ajuda!

Convickto

Número de Mensagens : 7
Idade : 66
Data de inscrição : 21/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://convickto.blogspot.com

Voltar ao Topo Ir em baixo

Re: Código de movimento personagem

Mensagem por Conteúdo patrocinado Hoje à(s) 07:46


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