2 erros, colisão e movimentação

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

2 erros, colisão e movimentação

Mensagem por namikazealexandre em Dom 17 Nov 2013, 17:09

Bom, mais uma duvida no meu jogo:

Código:
if keyboard_check_pressed(vk_left) {
x -= 30;
}
if keyboard_check_pressed(vk_right) {
  x += 30;
}



if ( !place_free(x,y-1) ){
  vspeed = 0;                            //Foco do erro 2(eu acho)
}
Erro 1 - Quando vou rodar o jogo dá esse erro:

COMPILATION ERROR in Script: Movimentação
Error in code at line 19:
x -= 30;
^
at position 7: Variable name expected.


E quando eu retiro essa linha 19, dá erro na linha do " x += 30;".

Erro 2 - O objeto não para quando se encontra uma posição acima de outro objeto, o que era o esperado por mim.

E ai, onde está o problema?

namikazealexandre

Número de Mensagens : 52
Data de inscrição : 31/05/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: 2 erros, colisão e movimentação

Mensagem por Alex FC em Dom 17 Nov 2013, 21:10

Com ESSE código não tem nada de errado. O erro está no nome do script!

Você colocou o nome de "Movimentação". Você não pode, em nenhum nome de recurso (Scripts, sprites, sons e etc) e variável usar acentuação e Ç (Cedilha).

Troque o nome por "Movimento" que deve resolver Very Happy.

A segunda dúvida não entendi, explique melhor. Happy

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: 2 erros, colisão e movimentação

Mensagem por namikazealexandre em Seg 18 Nov 2013, 19:52

1- Consertei o nome e mesmo erro:
___________________________________________
COMPILATION ERROR in Script: Movimento
Error in code at line 19:
x -= 30;
^
at position 7: Variable name expected.


2- Aqui:

if ( !place_free(x,y-1) ){
vspeed = 0;
}


Eu queria que o objeto parasse quando houvesse algo embaixo dele... mas nao dá certo

namikazealexandre

Número de Mensagens : 52
Data de inscrição : 31/05/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: 2 erros, colisão e movimentação

Mensagem por Gabreel em Seg 18 Nov 2013, 19:59

Amigo, aonde estas a executar esse código?

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: 2 erros, colisão e movimentação

Mensagem por namikazealexandre em Seg 18 Nov 2013, 20:05

No evento STEP!

namikazealexandre

Número de Mensagens : 52
Data de inscrição : 31/05/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: 2 erros, colisão e movimentação

Mensagem por patrick9as em Ter 19 Nov 2013, 00:36

Primeiramente, você tem que indicar de quem é o x que vai ser movimentado. Se você já tiver alguma experiência com programação, orientação a objetos, etc vai entender melhor o que eu estou dizendo. o.- 
Como você está fazendo por script, você tem que indicar a instancia que será movida utilizando o nome do seu objeto.
Por exemplo:
Código:

if (keyboard_check_pressed(vk_left))
{
      objeto_player.x -= 30
}
Segundo erro: Você tem que verificar o início da sprite corretamente. Mande o código que você está utilizando para fazer o objeto parar que eu posso te ajudar! investigador

patrick9as

Número de Mensagens : 9
Idade : 20
Data de inscrição : 08/11/2013
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://facebook.com/SevenWarriorsEDB

Voltar ao Topo Ir em baixo

Re: 2 erros, colisão e movimentação

Mensagem por saim em Ter 19 Nov 2013, 09:33

patrick9as, o script roda no evento step... no game maker, o step só existe dentro de objetos. O game maker interpreta que o "x" se refere ao objeto que roda o script. ERA pra estar certo.
Entretanto, se o erro está acontecendo, realmente é tentador presumir que o código está rodando fora de um objeto.
...position 7... é onde fica o "30", certo? Estranho, parece que o programa não está entendendo que "30" é a variação de "x", parece que está perguntando "é pra subtrair 30 de quê?"
Não deveria acontecer. Deve ter algum erro lá de trás sendo propagado até aqui. Você poderia postar o script completo?

Quanto ao outro erro, só vendo pra saber. Eu posso chutar. O primeiro chute é que você está se movimentando através da mudança de posição (y += valor; y -= valor) e, como nesse caso o valor de vspeed e nada são a mesma coisa, o objeto não está parando.
O segundo chute é que você está verificando por uma colisão ACIMA do objeto e espera que ele pare quando existe uma colisão ABAIXO dele. Note que no game maker, o eixo "y" cresce de cima pra baixo.

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

Re: 2 erros, colisão e movimentação

Mensagem por namikazealexandre em Ter 19 Nov 2013, 21:19

patrick9as escreveu:Primeiramente, você tem que indicar de quem é o x que vai ser movimentado. Se você já tiver alguma experiência com programação, orientação a objetos, etc vai entender melhor o que eu estou dizendo. o.- 
Como você está fazendo por script, você tem que indicar a instancia que será movida utilizando o nome do seu objeto.
Por exemplo:
Código:

if (keyboard_check_pressed(vk_left))
{
      objeto_player.x -= 30
}
Segundo erro: Você tem que verificar o início da sprite corretamente. Mande o código que você está utilizando para fazer o objeto parar que eu posso te ajudar! investigador
Tentarei especificar o objeto, mas pensei que nao era necessário já que o script está sendo rodado no objeto em si. Mas vou tentar e digo se deu certo

Jájá posto o código




namikazealexandre

Número de Mensagens : 52
Data de inscrição : 31/05/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: 2 erros, colisão e movimentação

Mensagem por namikazealexandre em Ter 19 Nov 2013, 21:25

saim escreveu:patrick9as, o script roda no evento step... no game maker, o step só existe dentro de objetos. O game maker interpreta que o "x" se refere ao objeto que roda o script. ERA pra estar certo.
Entretanto, se o erro está acontecendo, realmente é tentador presumir que o código está rodando fora de um objeto.
...position 7... é onde fica o "30", certo? Estranho, parece que o programa não está entendendo que "30" é a variação de "x", parece que está perguntando "é pra subtrair 30 de quê?"
Não deveria acontecer. Deve ter algum erro lá de trás sendo propagado até aqui. Você poderia postar o script completo?

Quanto ao outro erro, só vendo pra saber. Eu posso chutar. O primeiro chute é que você está se movimentando através da mudança de posição (y += valor; y -= valor) e, como nesse caso o valor de vspeed e nada são a mesma coisa, o objeto não está parando.
O segundo chute é que você está verificando por uma colisão ACIMA do objeto e espera que ele pare quando existe uma colisão ABAIXO dele. Note que no game maker, o eixo "y" cresce de cima pra baixo.
1 - hmm... agora toh confuso, enfim, sim, a posição 7 eh a do 30. Jaja posto o codigo.
2 - Nao, acredito eu, que toh movimentando com a speed msm.



Script de movimento

Código:
//Script de movimentação blocos
vspeed = 5;


if keyboard_check_pressed(vk_up) {      //Rotaciona para direita
   if (image_index < image_number){
      image_index = image_index + 1;
   }
  else {
        image_index = 0;
   }  
}

if keyboard_check(vk_down) {    //Aumenta a velocidade do bloco
   vspeed *= 3;
}

if keyboard_check_pressed(vk_left) {
   x -= 30;
}
if keyboard_check_pressed(vk_right) {
   x += 30;
}



if ( !place_free(x,y+1) ){ //consertei aki, tirei y-1 e pus y+1
   vspeed = 0;
}
 

Tah ai! Em relação ao erro 2, vi agora que é o contrário. Sabia que o eixo Y era invertido mas msm assim ainda nao me acostumei, ai bugou minha mente kk.
EDIT: Mesmo consertando o y-1, ainda nao deu certo Mad
P/patrick9as: Tentei especificar o objeto lá, e mesmo nao deu certo, deu erro logo no script. Se essa solução funcionasse seria um inconveniente já que estou pondo o script em um objeto e esse objeto é um "objeto-pai" de outros semelhantes, ou seja, especificando o objeto no script, eu teria que reformular muita coisa.

namikazealexandre

Número de Mensagens : 52
Data de inscrição : 31/05/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: 2 erros, colisão e movimentação

Mensagem por saim em Qua 20 Nov 2013, 10:10

erro 2:tente substituir "+1" por "+vspeed". Já que ela é definida como "5" logo no começo do script, isso não deve dar problema.

erro 1: não sei resolver (não achei erro nenhum) e não tenho como baixar a engine, se você postar... mas poste ela (o .gmk), de qualquer forma, que outra pessoa pode tentar.

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

Re: 2 erros, colisão e movimentação

Mensagem por patrick9as em Qua 20 Nov 2013, 16:03

namikazealexandre escreveu:
saim escreveu:patrick9as, o script roda no evento step... no game maker, o step só existe dentro de objetos. O game maker interpreta que o "x" se refere ao objeto que roda o script. ERA pra estar certo.
Entretanto, se o erro está acontecendo, realmente é tentador presumir que o código está rodando fora de um objeto.
...position 7... é onde fica o "30", certo? Estranho, parece que o programa não está entendendo que "30" é a variação de "x", parece que está perguntando "é pra subtrair 30 de quê?"
Não deveria acontecer. Deve ter algum erro lá de trás sendo propagado até aqui. Você poderia postar o script completo?

Quanto ao outro erro, só vendo pra saber. Eu posso chutar. O primeiro chute é que você está se movimentando através da mudança de posição (y += valor; y -= valor) e, como nesse caso o valor de vspeed e nada são a mesma coisa, o objeto não está parando.
O segundo chute é que você está verificando por uma colisão ACIMA do objeto e espera que ele pare quando existe uma colisão ABAIXO dele. Note que no game maker, o eixo "y" cresce de cima pra baixo.
1 - hmm... agora toh confuso, enfim, sim, a posição 7 eh a do 30. Jaja posto o codigo.
2 - Nao, acredito eu, que toh movimentando com a speed msm.



Script de movimento

Código:
//Script de movimentação blocos
vspeed = 5;


if keyboard_check_pressed(vk_up) {      //Rotaciona para direita
   if (image_index < image_number){
      image_index = image_index + 1;
   }
  else {
        image_index = 0;
   }  
}

if keyboard_check(vk_down) {    //Aumenta a velocidade do bloco
   vspeed *= 3;
}

if keyboard_check_pressed(vk_left) {
   x -= 30;
}
if keyboard_check_pressed(vk_right) {
   x += 30;
}



if ( !place_free(x,y+1) ){ //consertei aki, tirei y-1 e pus y+1
   vspeed = 0;
}
 

Tah ai! Em relação ao erro 2, vi agora que é o contrário. Sabia que o eixo Y era invertido mas msm assim ainda nao me acostumei, ai bugou minha mente kk.
EDIT: Mesmo consertando o y-1, ainda nao deu certo Mad
P/patrick9as: Tentei especificar o objeto lá, e mesmo nao deu certo, deu erro logo no script. Se essa solução funcionasse seria um inconveniente já que estou pondo o script em um  objeto e esse objeto é um "objeto-pai" de outros semelhantes, ou seja, especificando o objeto no script, eu teria que reformular muita coisa.
Realmente, eu achei estranho não ter dado certo, o Game Maker tem alguns problemas quanto a você tentar movimentar o objeto em outro lugar a não ser dentro do "Step", o que eu te recomendo é colocar esse código no objeto mesmo, aí é certeza de não dar nada errado.

Bom, para o segundo erro tente utilizar esse código:
Código:

if (other.y < y)//Se o outro objeto está acima de mim
{
      vspeed = 0;//Eu paro
}
E vamos deixar algumas coisas claras aqui:
Negativo = pra cima
Positivo = pra baixo
vspeed = velocidade na vertical
hspeed = velocidade na horizontal
y - 1 = enxergar pra cima (ou seja, seu código está certo)
Só me diz o porquê de vc estar usando o image_index e o image_number.
scratch 

patrick9as

Número de Mensagens : 9
Idade : 20
Data de inscrição : 08/11/2013
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://facebook.com/SevenWarriorsEDB

Voltar ao Topo Ir em baixo

Re: 2 erros, colisão e movimentação

Mensagem por namikazealexandre em Qui 21 Nov 2013, 21:42

@Patrick9as:

Quanto ao eixo y eu já tinha entendido, era só um pequeno bug na minha cabeça msm...

Quanto ao image_index e image_number, nao sei se é idiotice ou se tinha um jeito mais fácil, mas eu coloquei todos as imagens de um bloco em apenas um sprite(nao sei se mecionei aki que o jogo é um generico de tetris).
Tipo, em um sprite tem o bloco L em todas as suas 4 posições. Ai quando o player aperta UP, ele rotaciona, ou seja, muda de imagem...
Nao sei se fui claro...

namikazealexandre

Número de Mensagens : 52
Data de inscrição : 31/05/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: 2 erros, colisão e movimentação

Mensagem por saim em Sab 23 Nov 2013, 10:24

Agora é final-de-semana. Pode ser que eu consiga dar uma olhada na sua engine, se você postá-la.

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

Re: 2 erros, colisão e movimentação

Mensagem por namikazealexandre em Dom 24 Nov 2013, 23:46

kkk Só vi a msg agora, eu posto depois e se vc ainda puder dar uma olhada!

namikazealexandre

Número de Mensagens : 52
Data de inscrição : 31/05/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: 2 erros, colisão e movimentação

Mensagem por Conteúdo patrocinado Hoje à(s) 18:29


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