Conectar-se
Quem está conectado
17 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 17 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 11/01/2014
Número de Mensagens : 284
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 11

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Problemas com sprite

em Dom 09 Mar 2014, 15:22
Pessoal O/ estou com um problema, meu personagem principal poderá andar para direita e para esquerda, só que quando fui fazer os códigos no jogo, ele vai para a direita normalmente, mas, quando aperta o botão para esquerda o sprite dele não muda (ele faz tipo um moonwalk), então para contornar isso resolvi usar o image_xscale, mas, isso acaba atrapalhando na colisão, porque quando aperto para a esquerda, o personagem meio que avança um pouco para a esquerda (provavelmente para o sprite virar) então, eu queria saber que raios está errado com meu codigo  Mad 

Código:

//Create do player
if global.cor = 1 {  //Se escolheram a cor amarela...
    sprite_index = Amarelo_andandod
    image_speed = 0
}

if global.cor = 2 {
    sprite_index = Azul_andandod
    image_speed = 0
}

if global.cor = 3 {
    sprite_index = Laranja_andandod
    image_speed = 0
}

if global.cor = 4 {
    sprite_index = Preto_andandod
    image_speed = 0
}

if global.cor = 5 {
    sprite_index = Rosa_andandod
    image_speed = 0
}

if global.cor = 6 {
    sprite_index = Verde_andandod
    image_speed = 0
}

if global.cor = 7 {
    sprite_index = Vermelho_andandod
    image_speed = 0
}

if global.cor = 8 {
    sprite_index = Violeta_andandod
    image_speed = 0
}

global.velocidade = 5  //Velocidade igual a 5
global.jogo = 1  

Código:

//Step do player
//Movimentos
if keyboard_check(vk_right) && place_free(x+4,y) { //Se estiver para direita
    image_speed = 2
    if global.cor = 1 {
        sprite_index = Amarelo_andandod
    } else if global.cor = 2 {
        sprite_index = Azul_andandod  
    } else if global.cor = 3 {
        sprite_index = Laranja_andandod  
    } else if global.cor = 4 {
        sprite_index = Preto_andandod  
    } else if global.cor = 5 {
        sprite_index = Rosa_andandod    
    } else if global.cor = 6 {
        sprite_index = Verde_andandod    
    } else if global.cor = 7 {
        sprite_index = Vermelho_andandod    
    } else if global.cor = 8 {
        sprite_index = Violeta_andandod    
    }
    x += global.velocidade
} else if keyboard_check(vk_left) && place_free(x-4,y) {  //Se estiver para esquerda
    image_speed = 2
    if global.cor = 1 {
        sprite_index = Amarelo_andandoe
    } else if global.cor = 2 {
        sprite_index = Azul_andandoe  
    } else if global.cor = 3 {
        sprite_index = Laranja_andandoe  
    } else if global.cor = 4 {
        sprite_index = Preto_andandoe  
    } else if global.cor = 5 {
        sprite_index = Rosa_andandoe    
    } else if global.cor = 6 {
        sprite_index = Verde_andandoe  
    } else if global.cor = 7 {
        sprite_index = Vermelho_andandoe    
    } else if global.cor = 8 {
        sprite_index = Violeta_andandoe    
    }
    x -= global.velocidade
} else {  //Se estiver parado
    image_speed=0
    image_index=0
}

--
Quem quiser observar o problema de perto: https://www.dropbox.com/s/dpd6mg3peyubwrj/Sparck%20Racer.project.gmx
avatar
Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1846
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 254

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://willy-gmbr.blogspot.com/

Re: Problemas com sprite

em Dom 09 Mar 2014, 18:00
Reputação da mensagem: 100% (1 votos)
Se você está usando image_xscale para inverter a direção do sprite, saiba que o origin x do sprite deve ser sempre no centro, senão o "passo extra" sempre vai acontecer.
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 11/01/2014
Número de Mensagens : 284
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 11

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Problemas com sprite

em Dom 09 Mar 2014, 18:03
@Willy escreveu:Se você está usando image_xscale para inverter a direção do sprite, saiba que o origin x do sprite deve ser sempre no centro, senão o "passo extra" sempre vai acontecer.

Origin x? mas ele nao corta o sprite? Razz
Mas, nesse caso então nao vou usar o image_xscale, pois não sabia disso, mas, o que será que tá errado com meu codigo, pela logica ele ta certo  zangado
avatar
Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1846
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 254

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://willy-gmbr.blogspot.com/

Re: Problemas com sprite

em Dom 09 Mar 2014, 18:10
@vitorfernandes13 escreveu:Origin x? mas ele nao corta o sprite? Razz
Não. Apenas define qual é o eixo do sprite.

Nem cheguei a ver seu código/engine, só pelo descrição do problema dá pra saber.  sorrindo
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 11/01/2014
Número de Mensagens : 284
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 11

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Problemas com sprite

em Dom 09 Mar 2014, 18:15
@Willy escreveu:
@vitorfernandes13 escreveu:Origin x? mas ele nao corta o sprite? Razz
Não. Apenas define qual é o eixo do sprite.

Nem cheguei a ver seu código/engine, só pelo descrição do problema dá pra saber.  sorrindo

Eixo da sprite? Então pq ele cortou meu sprite?
Eu fiz 16 sprites, 1 para direita, e outro para esquerda, com 8 cores diferentes, então no meu próximo projeto eu usarei o image_xscale apos aprender sobre origin, mas nesse resolvi fazer um codigo, que muda a sprite de acordo com a sua posição, mas, não tá dando certo, meu personagem faz moonwalk.  bounce
avatar
Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1846
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 254

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://willy-gmbr.blogspot.com/

Re: Problemas com sprite

em Dom 09 Mar 2014, 18:27
Observei seu código. Apesar de não ser muito enxuto (dá pra resumir seu código e aumentar a eficiência/manutenção/implementação se você usar arrays), ele aparenta funcionar de forma correta.

Sobre o origin:


Para poder "inverter" a sprite, você deve usar:

Para direita: image_xscale = 1;
Para esquerda: image_xscale = -1;
Se você usar qualquer outro valor, a imagem vai distorcer, dando a impressão que ela foi cortada. Lembre-se que o origin x deve sempre estar no meio conforme mostrado na imagem acima.

Nota: Você mandou um arquivo inválido no lugar da engine.
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 11/01/2014
Número de Mensagens : 284
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 11

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Problemas com sprite

em Dom 09 Mar 2014, 18:33
@Willy escreveu:Observei seu código. Apesar de não ser muito enxuto (dá pra resumir seu código e aumentar a eficiência/manutenção/implementação se você usar arrays), ele aparenta funcionar de forma correta.

Sobre o origin:


Para poder "inverter" a sprite, você deve usar:

Para direita: image_xscale = 1;
Para esquerda: image_xscale = -1;
Se você usar qualquer outro valor, a imagem vai distorcer, dando a impressão que ela foi cortada. Lembre-se que o origin x deve sempre estar no meio conforme mostrado na imagem acima.

Nota: Você mandou um arquivo inválido no lugar da engine.

Duas coisas que eu sou horrível são loops e arrays  pale ficaria feliz se vc mostrasse um "exemplo enxuto"

Acho que estou sendo abusado mas eu gosto de aprender Happy

Obrigado pela dica do image_xscale, vou tentar usar se meu codigo não der certo, mas eu vou fazer dar certo , nem que seja na porrada  computador 
E o arquivo não é invalido, é do GM Studio  Suspect 
avatar
Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1846
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 254

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://willy-gmbr.blogspot.com/

Re: Problemas com sprite

em Dom 09 Mar 2014, 18:54
Seu código ficaria mais ou menos assim:

Create:

Código:
//Popula as Arrays
Cor[0] = Amarelo_andandod
Cor[1] = Azul_andandod
Cor[2] = Laranja_andandod
Cor[3] = Preto_andandod 
[...continua...]
sprite_index = Cor[global.CorSelecionada];

Apenas isso já define uma cor inicial pro player e dispensa aquele monte de código no step. global.CorSelecionada deve ser um numero de 0 a 3 (vide exemplo) para selecionar a cor do player se referindo a uma array.

Sobre o arquivo, você tem que tem que gerar um gmz para me passar. Faça download e tente abrir o que você postou e vai ver do que eu estou falando.
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 11/01/2014
Número de Mensagens : 284
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 11

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Problemas com sprite

em Dom 09 Mar 2014, 19:01
Aqui arrumei o arquivo Very Happy
Obrigado de novo
https://www.dropbox.com/s/k9s5az6i5tl4udm/Sparck%20Racer.gmz

Vou tentar fazer esses arrays aqui, obrigado de novo
Dps, vc poderia dar uma conferida no arquivo? mentira, quero que vc olhe tambem o meu jogo Razz
So pra ver mesmo o que é que causa o problema, eu to começando a fica com raiva disso  computador
avatar
Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1846
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 254

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://willy-gmbr.blogspot.com/

Re: Problemas com sprite

em Dom 09 Mar 2014, 19:28
Agora sim consegui ver seu projeto...

Observei que você precisa não só mexer como entender a funcionalidade do origin (sua mola que o diga). De qualquer modo, pra resolver seu problema, vá em todos os sprites do personagens e deixe a origin x em 20 (metade de 41 arredondado). Depois, coloque esse código no step:

Código:
if keyboard_check(vk_right){
    image_xscale = 1;
}else if keyboard_check(vk_left){
    image_xscale =-1;
}
Peço que não deixe esse meu código como definitivo pois é apenas para exemplo. Recomendo que tente colocar de um modo seguro para evitar bugs se achar necessário.

Sobre seu jogo, não tenho muito o que dizer pois o mesmo está bem no começo... Só recomendo que use cores menos vivas.

Enfim, flws... blz
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 11/01/2014
Número de Mensagens : 284
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 11

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Problemas com sprite

em Dom 09 Mar 2014, 19:38
@Willy escreveu:Agora sim consegui ver seu projeto...

Observei que você precisa não só mexer como entender a funcionalidade do origin (sua mola que o diga). De qualquer modo, pra resolver seu problema, vá em todos os sprites do personagens e deixe a origin x em 20 (metade de 41 arredondado). Depois, coloque esse código no step:

Código:
if keyboard_check(vk_right){
    image_xscale = 1;
}else if keyboard_check(vk_left){
    image_xscale =-1;
}
Peço que não deixe esse meu código como definitivo pois é apenas para exemplo. Recomendo que tente colocar de um modo seguro para evitar bugs se achar necessário.

Sobre seu jogo, não tenho muito o que dizer pois o mesmo está bem no começo... Só recomendo que use cores menos vivas.

Enfim, flws... blz

Minha mola ficou ruim?
Obrigado Willy, seu nome já vai estar nos agradecimentos  felicidade 
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum