Coordenadas das balas

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

Coordenadas das balas

Mensagem por vitorfernandes13 em Dom 23 Mar 2014, 17:46

Pessoal, estou praticando no GM:S, e resolvi tentar criar um joguinho (meio tosco até) de tiro, mas, não sou bom com coordenas, e as vezes quando aperto X a bala não "sai" ou entao "sai" debaixo do player, se alguem (uma alma muito caridosa) puder me ajudar ...  computador 

Código:

//Step player
//Tiro
if keyboard_check_pressed(ord("X")) {
    if global.municao > 0 {
        if image_index = 1 {
            global.municao -= 1
            
            with(instance_create(x+32,y-38,obj_Bala)) {
                motion_set(0,20)
            }
        } else if image_index = -1 {
            global.municao -= 1
            
            with(instance_create(x+32,y-38,obj_Bala)) {
                motion_set(180,20)            
            }

        }
    }
}

Arquivo do Jogo: https://www.dropbox.com/s/5ihhxq688b6hef0/Tiro.gmz Happy

vitorfernandes13

Ranking : Nota C
Número de Mensagens : 284
Data de inscrição : 11/01/2014
Notas recebidas : C
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Coordenadas das balas

Mensagem por Willy em Dom 23 Mar 2014, 19:27

Coordenadas... Não existe nenhum segredo nisso.
Para o GM, uma coordenada X representa uma posição horizontal, e uma coordenada Y, uma vertical. Tenho essas duas coordenadas, temos então uma posição (um pixel, pra ser mais especifico).

Certo, como você quer fazer um tiro, você deverá criar o projétil em uma posição relativa à coordenada do player, e você faz isso, usando a variável x e y do próprio jogador.

Mas, conforme eu disse antes, um x e um y formam uma posição, e é ela que importa. Tal posição depende do origin do sprite do jogador. Se ela estiver na posição x0 e y0 (canto superior esquerdo), então deveremos "contar" quantos pixeis horizontais devemos percorrer para chegar até a ponta da arma, e depois, o mesmo com o y, definindo então qual será a posição que a bala deverá ser criada. Se o origin for outro (center, por exemplo), você deverá fazer o processo mais uma vez para achar a posição da bala. Em outras palavras, o que você deve colocar no "instance_create(x+valor,y+valor,obj)" é a distancia entre o origin e a coordenada da ponta da arma (horizontalmente e verticalmente).

Dúvidas é só falar. blz

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Coordenadas das balas

Mensagem por vitorfernandes13 em Dom 23 Mar 2014, 20:07

Willy escreveu:Coordenadas... Não existe nenhum segredo nisso.
Para o GM, uma coordenada X representa uma posição horizontal, e uma coordenada Y, uma vertical. Tenho essas duas coordenadas, temos então uma posição (um pixel, pra ser mais especifico).

Certo, como você quer fazer um tiro, você deverá criar o projétil em uma posição relativa à coordenada do player, e você faz isso, usando a variável x e y do próprio jogador.

Mas, conforme eu disse antes, um x e um y formam uma posição, e é ela que importa. Tal posição depende do origin do sprite do jogador. Se ela estiver na posição x0 e y0 (canto superior esquerdo), então deveremos "contar" quantos pixeis horizontais devemos percorrer para chegar até a ponta da arma, e depois, o mesmo com o y, definindo então qual será a posição que a bala deverá ser criada. Se o origin for outro (center, por exemplo), você deverá fazer o processo mais uma vez para achar a posição da bala. Em outras palavras, o que você deve colocar no "instance_create(x+valor,y+valor,obj)" é a distancia entre o origin e a coordenada da ponta da arma (horizontalmente e verticalmente).

Dúvidas é só falar. blz

De fato, não levei em consideração o origin do player, mas, mesmo assim, está tendo bug, tenho que apertar X varias vezes para que o tiro apareça, e quando o personagem está virado para a esquerda, a bala vai para direita :Pmesmo eu mudando o motion_set dela.

vitorfernandes13

Ranking : Nota C
Número de Mensagens : 284
Data de inscrição : 11/01/2014
Notas recebidas : C
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Coordenadas das balas

Mensagem por Willy em Dom 23 Mar 2014, 20:40

Nem cheguei a ler o seu código, considerei que sua dúvida era apenas em "ajustar" o lugar por onde sai o tiro.

Bom, agora que olhei seu código:

Você escreveu:tenho que apertar X varias vezes para que o tiro apareça
Isso é porque você usou essa condição:
Código:
if image_index = 1
Com isso, a condição só será true quando o sprite estiver exatamente no frame 1, ou seja, supondo que eu sprite tenha 10 frames, você tem apenas 10% de conseguir disparar. Não vejo lógica nesta condição. Outra coisa, para a esquerda, você usou if image_index = -1. Este "-1" é simplesmente nenhum frame, uma vez que o primeiro é sempre o zero.

Você escreveu:quando o personagem está virado para a esquerda, a bala vai para direita
Isso porque a condição do tiro pra esquerda nunca será atendida justamente por causa do "-1".
Recomendo que apague todo seu código e faça novamente, buscando deixar o código de forma mais clara. Para saber se está claro, basta tentar "ler" co código como se fosse um texto qualquer e ver se o mesmo faz sentido.

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Coordenadas das balas

Mensagem por WellingtonBecker em Dom 23 Mar 2014, 20:56

Amigo, aqui tem a solução para seu problema:

http://gmbr.forumeiros.com/t17061-engine-tiro-plataforma

WellingtonBecker

Ranking : Nota D
Número de Mensagens : 820
Idade : 35
Data de inscrição : 09/05/2013
Notas recebidas : D
Reputação : 105
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Coordenadas das balas

Mensagem por vitorfernandes13 em Dom 23 Mar 2014, 21:04

Willy escreveu:Nem cheguei a ler o seu código, considerei que sua dúvida era apenas em "ajustar" o lugar por onde sai o tiro.

Bom, agora que olhei seu código:

Você escreveu:tenho que apertar X varias vezes para que o tiro apareça
Isso é porque você usou essa condição:
Código:
if image_index = 1
Com isso, a condição só será true quando o sprite estiver exatamente no frame 1, ou seja, supondo que eu sprite tenha 10 frames, você tem apenas 10% de conseguir disparar. Não vejo lógica nesta condição. Outra coisa, para a esquerda, você usou if image_index = -1. Este "-1" é simplesmente nenhum frame, uma vez que o primeiro é sempre o zero.

Você escreveu:quando o personagem está virado para a esquerda, a bala vai para direita
Isso porque a condição do tiro pra esquerda nunca será atendida justamente por causa do "-1".
Recomendo que apague todo seu código e faça novamente, buscando deixar o código de forma mais clara. Para saber se está claro, basta tentar "ler" co código como se fosse um texto qualquer e ver se o mesmo faz sentido.

Acho que descobri o erro, na verdade eu usei a função errada sou uma topeira mesmo ¬¬
Na verdade o correto era image_xscale e não image_index, modifiquei aqui, espero que agora dê certo Happy
--
EDIT: Deu certo. Vlw Willy e obg por responder o topico Wellington Happy

vitorfernandes13

Ranking : Nota C
Número de Mensagens : 284
Data de inscrição : 11/01/2014
Notas recebidas : C
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Coordenadas das balas

Mensagem por Willy em Dom 23 Mar 2014, 21:31

Acostume-se com esse tipo de erro... É mais comum do que imagina! Eu mesmo já passei horas tentando consertar algum bug criando fórmulas mirabolantes, quando na verdade, era um simples detalhe que passou despercebido...

Bom, o tópico está resolvido e o mesmo será trancado. Caso deseje destrancar, envie uma MP para mim ou para outro moderador.

Flws... blz

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Coordenadas das balas

Mensagem por Conteúdo patrocinado Hoje à(s) 16:25


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