Não to conseguindo fazer código não mover enquanto

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

Resolvido Não to conseguindo fazer código não mover enquanto

Mensagem por iSillum em Ter 22 Jan 2013, 21:53

Não to conseguindo fazer código de não mover enquanto está no ar, estou usando:

Código:
keyboard_check(vk_left) && !place_free(x,y-1)

Mas ele fico para quando eu uso isso, o que tem de errado?


Última edição por iSillum em Qui 24 Jan 2013, 14:28, editado 2 vez(es)

iSillum

Número de Mensagens : 72
Data de inscrição : 22/01/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por Lukbebalduke em Ter 22 Jan 2013, 22:06

Que vc colocou not, veja:

keyboard_check(vk_left) && !place_free(x,y-1)

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por iSillum em Ter 22 Jan 2013, 22:42

pinpi escreveu:Que vc colocou not, veja:

keyboard_check(vk_left) && !place_free(x,y-1)

Mas é isso mesmo, se houver algo sólido em baixo dele (chão) ele vai se mover, só que ele continua se movendo no ar.

iSillum

Número de Mensagens : 72
Data de inscrição : 22/01/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por Lukbebalduke em Ter 22 Jan 2013, 23:02

Entao deve ser outra coisa, nao tem nada de errado no codigo.

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por NPH em Ter 22 Jan 2013, 23:05

Posso te dar um bom exemplo para verificar isso, pois eu uso até demais!
código:
//create
noar=false;

//step
if (place_free(x,y+1)){gravity=0.4;noar=true;friction=0;}
else if !(place_free(x,y+1)){gravity=0;noar=false;friction=0.1;}

//teclado
if (noar=false)
{
if (keyboard_check(vk_right))and(hspeed<4){hspeed+=0.3;}
if (keyboard_check(vk_left))and(hspeed>-4){hspeed-=0.3;}
}

Eu uso muito isso em meus jogos de plataforma!
Qualquer dúvida, estou aí para ajudar quem for!
[edit]
-----
Esqueci de mencionar que quando for bater em algo sólido, no caso o chão, no código da colisão com o chao use vspeed=0!

NPH

Ranking : Nota B
Número de Mensagens : 452
Idade : 22
Data de inscrição : 28/11/2010
Notas recebidas : B
Reputação : 32
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por makgamer em Qua 23 Jan 2013, 00:09

bom se seu jogo for de plataforma e você está se referindo ao pulo, então é simples, troque
Código:
keyboard_check(vk_left) && !place_free(x,y-1)
por:
Código:
keyboard_check(vk_left) and !vspeed=0

makgamer

Ranking : Nota D
Número de Mensagens : 927
Idade : 18
Data de inscrição : 29/03/2009
Notas recebidas : D
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   : 1
   :

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por Zero. em Qua 23 Jan 2013, 00:29

Acho que o código tá errado.

acho q deve ser assim :

keyboard_check(vk_left) && !place_free(x,y+1)

mudei só o sinal.

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por saim em Qua 23 Jan 2013, 13:32

FlyAway escreveu:Acho que o código tá errado.

acho q deve ser assim :

keyboard_check(vk_left) && !place_free(x,y+1)

mudei só o sinal.
Faz sentido.

Mas não explica porque o objeto CONSEGUE se mexer quando está no chão. Quer dizer, como ele estava antes (y-1), a função place_free deveria retornar true SEMPRE, impedindo o objeto de se mover em qualquer situação - a menos que ele estivesse prestes a tocar o teto.

A menos que a variável "solid" do objeto esteja marcada como "true". Nesse caso, pode ser que ele esteja colidindo consigo mesmo, permitindo movimentação em qualquer lugar.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por iSillum em Qua 23 Jan 2013, 13:48

pinpi escreveu:Entao deve ser outra coisa, nao tem nada de errado no codigo.

Eu verifiquei todos os códigos e realmente não tinha nada errado com esse código de cima, mas depois que eu concertei apareceu outro problema, ele não vai para os lados, mas se eu apertar algum botão eu para de pular até o final e começa a cair.

Tipo assim, eu pulo por exemplo até a altura 20, ele vai subindo normalmente mas se eu aperta right ou left, ele para de subir antes de chegar a 20 e começa a cair.

Como concerta?

Obrigado por me ajudar a resolver o primeiro problema todo mundo.

iSillum

Número de Mensagens : 72
Data de inscrição : 22/01/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por Super Maker em Qua 23 Jan 2013, 14:56

Pô pessoal, desculpa por isso, mas é brincadeira vocês não terem resolvido isso ainda.
Uma simples variável pra colisão e pornto, acabou. E eles viveram felizes para sempre fim! rsrs
Tenta isso @iSillum.

Super Maker

Número de Mensagens : 646
Idade : 33
Data de inscrição : 09/07/2011
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por iSillum em Qua 23 Jan 2013, 15:01

Super Maker escreveu:Pô pessoal, desculpa por isso, mas é brincadeira vocês não terem resolvido isso ainda.
Uma simples variável pra colisão e pornto, acabou. E eles viveram felizes para sempre fim! rsrs
Tenta isso @iSillum.

Eu já tinha resolvido isso, mas apareceu outro problema, olha minha ultima resposta.

iSillum

Número de Mensagens : 72
Data de inscrição : 22/01/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por saim em Qua 23 Jan 2013, 15:17

iSillum escreveu:
pinpi escreveu:Entao deve ser outra coisa, nao tem nada de errado no codigo.

Eu verifiquei todos os códigos e realmente não tinha nada errado com esse código de cima, mas depois que eu concertei apareceu outro problema, ele não vai para os lados, mas se eu apertar algum botão eu para de pular até o final e começa a cair.

Tipo assim, eu pulo por exemplo até a altura 20, ele vai subindo normalmente mas se eu aperta right ou left, ele para de subir antes de chegar a 20 e começa a cair.

Como concerta?

Obrigado por me ajudar a resolver o primeiro problema todo mundo.
Que parte do código tinha problema (já que essa parte que estávamos olhando não tinha)? Como foi consertado?
Como é o código de pular, cair e bater no teto? Estou desconfiado que seu objeto está se comportando como se tivesse batido no teto.
A variável "solid" do objeto está marcada como true ou false?

É muito difícil saber como consertar seu código sem conhecê-lo. Você poderia postar o código completo e indicar o evento em que ele acontece, por favor?

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por iSillum em Qua 23 Jan 2013, 15:21

saim escreveu:É muito difícil saber como consertar seu código sem conhecê-lo. Você poderia postar o código completo e indicar o evento em que ele acontece, por favor?

Eu vou te enviar o arquivo ai você olha blz?
Pra enviar e só mandar o arquivo .gmk81?

iSillum

Número de Mensagens : 72
Data de inscrição : 22/01/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por saim em Qua 23 Jan 2013, 15:30

Eu estou num computador sem o game maker, então não adianta... Sad
Mas você pode colocar o .gmk81 em algum site de hospedagem que alguém certamente vai olhar pra você! Smile

Mas a versão mais popular é a 8.0, se você tiver como "salvar como" .gmk, melhor.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por iSillum em Qua 23 Jan 2013, 15:42

No evento Create:
Código:
//variavel auxiliar
global.posicaojogador="right";

No evento Step

Código:
//deixa jogador parado com sprite certa
if global.posicaojogador=="right" && keyboard_check_released(vk_right){
    sprite_index=spr_jogador_parado_right
    motion_set(0,0)
}else
if global.posicaojogador=="left" && keyboard_check_released(vk_left){
    sprite_index=spr_jogador_parado_left
    motion_set(180,0)
}

//gravidade
if place_free(x,y+1){
vspeed+=1
}

//sistema mudar sprite se esta subindo ou caindo
if vspeed<0 && global.posicaojogador=="right"{
    sprite_index=spr_jogador_pulando_right
}else
if vspeed<0 && global.posicaojogador=="left"{
    sprite_index=spr_jogador_pulando_left
}
if vspeed>0 && global.posicaojogador=="right"{
    sprite_index=spr_jogador_caindo_right
}else
if vspeed>0 && global.posicaojogador=="left"{
    sprite_index=spr_jogador_caindo_left
}

No evento Left:

Código:
//sistema andar esquerda
if keyboard_check (vk_left) && !place_free(x,y+1){
    image_speed=1.8
    motion_set(180,4)
    sprite_index=spr_jogador_andando_left
    sprite_get_number=10
    global.posicaojogador="left";
}

No evento Up:
Código:
//sistema de pulo
if keyboard_check(vk_up) && !place_free(x,y+1){
    vspeed=-10
    //para pular sempre numa direçao
    if global.posicaojogador=="right"{
        hspeed=7
    }else
    if global.posicaojogador=="left"{
        hspeed=-7
    }
}

No evento right:
Código:
//sistema andar direita
if keyboard_check(vk_right) && !place_free(x,y+1){
    image_speed=1.8
    motion_set(0,4)
    sprite_index=spr_jogador_andando_right
    sprite_get_number=10
    global.posicaojogador="right";
}

No evento Collision no obj_jogador
Código:
//para nao atravessar objeto
vspeed=0
hspeed=0
//ao cair mudar a sprite dele parado no chao
if !place_free(x,y+1) && global.posicaojogador=="right"{
    sprite_index=spr_jogador_parado_right
}else
if !place_free(x,y+1) && global.posicaojogador=="left"{
    sprite_index=spr_jogador_parado_left
}

O jogador e o chao estão como Solid

OBS: O jogador pula para frente.

iSillum

Número de Mensagens : 72
Data de inscrição : 22/01/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por Zero. em Qua 23 Jan 2013, 15:52

Tira o solid do jogador.

e nessa parte :

//gravidade
if place_free(x,y+1){
vspeed+=1
}

Mude para :

//gravidade
gravity=0.4 // mude ao seu gosto
gravity_direction=270 // 270 é para ir pra baixo .

Seus codigos pra mim estão muito confusos, dê uma organizada pode atrapalhar mais tarde.
Espero que funcione Happy

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por iSillum em Qua 23 Jan 2013, 15:55

FlyAway escreveu:Tira o solid do jogador.

e nessa parte :

//gravidade
if place_free(x,y+1){
vspeed+=1
}

Mude para :

//gravidade
gravity=0.4 // mude ao seu gosto
gravity_direction=270 // 270 é para ir pra baixo .

Seus codigos pra mim estão muito confusos, dê uma organizada pode atrapalhar mais tarde.
Espero que funcione Happy

Continua a mesma coisa.

E sobre os códigos estarem confusos o que que eu posso fazer pra melhorar?

iSillum

Número de Mensagens : 72
Data de inscrição : 22/01/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por Zero. em Qua 23 Jan 2013, 16:02

E mude isso:

No evento Collision no obj_jogador

Código:

//para nao atravessar objeto
vspeed=0
hspeed=0
//ao cair mudar a sprite dele parado no chao
if !place_free(x,y+1) && global.posicaojogador=="right"{
sprite_index=spr_jogador_parado_right
}else
if !place_free(x,y+1) && global.posicaojogador=="left"{
sprite_index=spr_jogador_parado_left
}

Por Isso :

//para nao atravessar objeto
move_contact_solid(direction,12)
vspeed=0
//ao cair mudar a sprite dele parado no chao
if !place_free(x,y+1) && global.posicaojogador=="right"{
sprite_index=spr_jogador_parado_right
}else
if !place_free(x,y+1) && global.posicaojogador=="left"{
sprite_index=spr_jogador_parado_left
}



E vc pode separar mais os códigos, ta mto embolado.

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por iSillum em Qua 23 Jan 2013, 16:37

continua a mesma coisa.

@FlyAway você se importa se eu te mandar o arquivo e você dar uma olhada?

iSillum

Número de Mensagens : 72
Data de inscrição : 22/01/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por saim em Qua 23 Jan 2013, 16:39

O que está acontecendo é que ao apertar as teclas, você define a direção do movimento. A velocidade vertical fica zerada, sobrando só a horizontal. Se ao invés de usar motion_set você definir o valor de hspeed (pra 4 ou -4, dependendo de ser pra direita ou esquerda), deve resolver.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por Zero. em Qua 23 Jan 2013, 16:45

Hmm, acho que o saim resolveu. Mas se quizer pode passar o gmk pra mim sim.
Naum vi a parte de movimento. Vc usou motion_set '-'

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por iSillum em Qua 23 Jan 2013, 17:20

saim escreveu:O que está acontecendo é que ao apertar as teclas, você define a direção do movimento. A velocidade vertical fica zerada, sobrando só a horizontal. Se ao invés de usar motion_set você definir o valor de hspeed (pra 4 ou -4, dependendo de ser pra direita ou esquerda), deve resolver.

Mudei e continua a mesma coisa.

FlyAway mandei pra você

iSillum

Número de Mensagens : 72
Data de inscrição : 22/01/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por saim em Sex 25 Jan 2013, 11:28

iSillum escreveu:Mudei e continua a mesma coisa.
Você ainda está usando motion_set em algum lugar? Vi no step que tem umas situações que você usa, ao soltar a tecla. Vai ver, o erro só está acontecendo ao SOLTAR, não ao apertar (pra testar, pule, aperte a tecla e NÃO SOLTE).

Se não for isso, poste pra gente como ficou o código, depois que você alterou.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por iSillum em Sex 25 Jan 2013, 14:45

saim escreveu:
iSillum escreveu:Mudei e continua a mesma coisa.
Você ainda está usando motion_set em algum lugar? Vi no step que tem umas situações que você usa, ao soltar a tecla. Vai ver, o erro só está acontecendo ao SOLTAR, não ao apertar (pra testar, pule, aperte a tecla e NÃO SOLTE).

Se não for isso, poste pra gente como ficou o código, depois que você alterou.

O Flyaway já resolvei meu problema, eu enviei pra ele e ele concertou tudo.

No Create:
Código:
//variavel auxiliar
global.dir=1;
pulando=false
Evento gravity direction 270 com gravity 1

No evento step:
Código:
//sistema de andar
if keyboard_check(vk_right) and !place_free(x,y+1){
    global.dir=1
    sprite_index=spr_jogador_andando
    hspeed=4}
   
if keyboard_check(vk_left) and !place_free(x,y+1){
    global.dir=-1
    sprite_index=spr_jogador_andando
    hspeed=-4}
   
    if (keyboard_check_released(vk_left) or keyboard_check_released(vk_right)) and pulando=false
    hspeed=0
   
   
//deixa jogador parado com sprite certa
if !keyboard_check(vk_right) and !keyboard_check(vk_left)
sprite_index=spr_jogador_parado

//sistema mudar sprite se esta subindo ou caindo
if vspeed<0
    sprite_index=spr_jogador_pulando

if vspeed>0
    sprite_index=spr_jogador_caindo
   
// sprite pro lado certo
image_xscale=global.dir

//pra saber se esta pulando
if place_free(x,y+1)
pulando=true
else
pulando=false


No Collision com o objeto obj_chao


Código:
move_contact_solid(direction,12)
vspeed=0

if !keyboard_check(vk_right) and !keyboard_check(vk_left)
hspeed=0

No evento Press Up
Código:
//sistema de pulo
if keyboard_check(vk_up) && !place_free(x,y+1){
    vspeed=-10
    y-=2
    //para pular sempre numa direçao
    if global.dir=1{
        hspeed=7
    }else{
        hspeed=-7}}

iSillum

Número de Mensagens : 72
Data de inscrição : 22/01/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Não to conseguindo fazer código não mover enquanto

Mensagem por Conteúdo patrocinado Hoje à(s) 08: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