[Dúvida/Ajuda] Personagem andar com um clique do mouse

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

[Dúvida/Ajuda] Personagem andar com um clique do mouse

Mensagem por Kojiro Hiori em Ter 13 Set 2011, 21:47

Olá! Sou novo aqui no fórum e esse é o meu primeiro post...
Nunca tive contato com programação, e comecei a aprender com a linguagem GML. Já tentei de várias formas fazer com que meu personagem se mova com o clique esquerdo do mouse (Gostaria que meu personagem andasse tanto com as setas de direção do teclado quanto com o mouse).
A parte de andar pelo teclado já foi trabalhada e está em 100%, e eu consegui fazer com que meu personagem se mova com o clique, mas a sprite dele não se move de acordo com a direção correta... Realmente preciso tirar várias dúvidas, mas essa é a que está em prioridade...

Informações adicionais:
Fiz com que meu char tivesse cada animação (sprite) para cada movimento:
Código:
Sprite dele parado:
frente; (sul)
costas; (norte)
esquerda; (oeste)
direita; (leste)
sudeste;
nordeste;
sudoeste e
noroeste.
Código:
Sprite dele andando:
cfrente; (sul)
ccostas; (norte)
cesquerda; (oeste)
cdireita; (leste)
csudeste;
cnordeste;
csudoeste e
cnoroeste.

Desde já, agradeço a compreenção e a atenção de vocês antecipadamente.

Kojiro Hiori

Número de Mensagens : 9
Data de inscrição : 13/09/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Dúvida/Ajuda] Personagem andar com um clique do mouse

Mensagem por Markituh em Ter 13 Set 2011, 22:24

Você pode usar a função mouse_check_button_pressed() no Step para checar se um botão foi pressionado. Ou pode criar um evento Mouse Left Pressed e colocar o código de movimento. A estrutura básica é essa:
Código:
// Evento Mouse Left Pressed
var mx, my;
mx = mouse_x; // Armazena as coordenadas do mouse
my = mouse_y; // em variáveis
direction = point_direction(x, y, mx, my); // Direção de acordo com a coordenada do objeto e a coordenada do mouse.
speed = 4 // Mude para qualquer velocidade que você queira.
while (x!= mx && y!= my)
{
      if (x == mx && y == my)
      {
      speed = 0; // Para o objeto.
      }

}
O loop while vai dar conta de parar quando chegar ao destino. Para definir a sprite para o objeto, você tem que checar a direção, que é baseada em 360 graus e 0º = direita absoluta e um valor positivo rotaciona para a esquerda. A checagem poderia ser feita assim:
Código:
if direction > 0 && direction < 80 // Nordeste
{
sprite_index = spr_player_nordeste_andando;
}
Coloque a essa checagem depois da definição da direção. E coloque denovo essa checagem dentro do IF do loop WHILE para colocar desta vez a sprite dele parado. Espero ter sido claro.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Dúvida/Ajuda] Personagem andar com um clique do mouse

Mensagem por uriel.56 em Ter 13 Set 2011, 22:26

Tente usar o famoso " image_angle=direction "

Além de economizar vários sprites, ele deixa o personagem lívre.

Faz o seguinte

bota no step

image_angle=direction

vê se resolve o problema.

uriel.56

Número de Mensagens : 430
Idade : 19
Data de inscrição : 13/02/2010
Reputação : -2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Dúvida/Ajuda] Personagem andar com um clique do mouse

Mensagem por Markituh em Ter 13 Set 2011, 22:32

Tente usar o famoso " image_angle=direction "

Além de economizar vários sprites, ele deixa o personagem lívre.
Se for um jogo de tiro em top-down, por exemplo. Mas ao que me parece, é um RPG. Outra coisa é que para o image_angle = direction funcionar corretamente, a sprite do player precisa estar virada para a direita.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Dúvida/Ajuda] Personagem andar com um clique do mouse

Mensagem por Kojiro Hiori em Ter 13 Set 2011, 23:05

Olá! Eu testei o código; coloquei-o no evento "Mouse: Left Button", mas ainda sim, quando clico, nada ocorre...
Código:
// Evento Mouse Left Pressed
var mx, my;
mx = mouse_x; // Armazena as coordenadas do mouse
my = mouse_y; // em variáveis
direction = point_direction(x, y, mx, my); // Direção de acordo com a coordenada do objeto e a coordenada do mouse.
if direction > 0 && direction < 80 // Nordeste
{
sprite_index = cnordeste; //Sprite do char andando para nordeste
}
speed = 4 // Mude para qualquer velocidade que você queira.
while (x!= mx && y!= my)
{
if direction > 0 && direction < 80 // Nordeste
{
sprite_index = cnordeste; //Sprite do char andando para nordeste
}
      if (x == mx && y == my)
      {
      speed = 0; // Para o objeto.
      }

}

Edit: Eu tentei por no evento "Step", com o comando:
"if mouse_check_button_pressed(mb_left){
E o código aqui
}
Mas o jogo trava o computador todo, ao clicar na tela...


Última edição por Kojiro Hiori em Ter 13 Set 2011, 23:19, editado 1 vez(es)

Kojiro Hiori

Número de Mensagens : 9
Data de inscrição : 13/09/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Dúvida/Ajuda] Personagem andar com um clique do mouse

Mensagem por Markituh em Ter 13 Set 2011, 23:19

Ah sim, na verdade o evento é Global Mouse Button Pressed. O Mouse Button normal vai executar quando você clicar na sprite do player. E outra coisa, o último IF de checagem de direção é pra ficar dentro do IF do WHILE, e nao é andando, é parado. Assim:
Código:
// Evento Mouse Left Pressed
var mx, my;
mx = mouse_x; // Armazena as coordenadas do mouse
my = mouse_y; // em variáveis
direction = point_direction(x, y, mx, my); // Direção de acordo com a coordenada do objeto e a coordenada do mouse.
if direction > 0 && direction < 80 // Nordeste
{
sprite_index = cnordeste; //Sprite do char andando para nordeste
}
speed = 4 // Mude para qualquer velocidade que você queira.
while (x!= mx && y!= my)
{
      if (x == mx && y == my)
      {
      speed = 0; // Para o objeto.
            if direction > 0 && direction < 80 // Nordeste
            {
            sprite_index = nordeste; //Sprite do char PARADO para nordeste
            }
      }

}

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Dúvida/Ajuda] Personagem andar com um clique do mouse

Mensagem por Kojiro Hiori em Ter 13 Set 2011, 23:30

Então, cara, eu criei o evento global de clique do mouse e coloquei o código, mas sempre que clico na tela, o jogo trava (juntamente do computador) por um tempo um tantoque longo... Eu não sei qual o erro... silent

Kojiro Hiori

Número de Mensagens : 9
Data de inscrição : 13/09/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Dúvida/Ajuda] Personagem andar com um clique do mouse

Mensagem por Alguém em Ter 13 Set 2011, 23:34

Kojiro, será que nao e a capacidade do seu computador nao ser boa o suficiente e com isso, ele trava?

Alguém

Número de Mensagens : 36
Data de inscrição : 30/05/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Dúvida/Ajuda] Personagem andar com um clique do mouse

Mensagem por Kojiro Hiori em Ter 13 Set 2011, 23:38

Uai, começou a travar do nada aqui agora, por causa de um script... Antes funcionava normalmente, só foi eu colocar o evento juntamente com o script... Smile

Edit: Quando inicio o jogo, fica normal, trava apenas quando clico na tela...

Kojiro Hiori

Número de Mensagens : 9
Data de inscrição : 13/09/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Dúvida/Ajuda] Personagem andar com um clique do mouse

Mensagem por Alguém em Ter 13 Set 2011, 23:40

Então nao e o que eu pensava, então deleta esse script e cria outro ou então tenta usar eles sem ser no mesmo personagem

Alguém

Número de Mensagens : 36
Data de inscrição : 30/05/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Dúvida/Ajuda] Personagem andar com um clique do mouse

Mensagem por Kojiro Hiori em Ter 13 Set 2011, 23:54

Poxa, eu realmente queria por o sistema de clique nele... Tentei de diversas formas e não consegui; me registrei no fórum especialmente por busca de ajuda :/

Ninguém mais poderia me socorrer e me tirar esse problema?

Kojiro Hiori

Número de Mensagens : 9
Data de inscrição : 13/09/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Dúvida/Ajuda] Personagem andar com um clique do mouse

Mensagem por Conteúdo patrocinado Hoje à(s) 02:05


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