Problemas com o mouse (botão direito)

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

Resolvido Problemas com o mouse (botão direito)

Mensagem por Ricardo Alves em Sex 07 Set 2012, 01:05

Olá pessoal, algo ultimatente está me dando nervosismo. Vou explicar:

Quando pressiono, por exemplo, a tecla "A" e mantenho-a pressionada, minha nave se movimenta para esquerda. Até aí tudo bem. Agora quando pressiono o botão direito do mouse e mantenho-o pressionado (lembre-se que "A" também está pressionada) minha nave ativa a hipervelocidade, que é a speed=speed+1. Até aí também tudo bem Very Happy!!! Agora quando solto a tecla "A" e aperto a "D" (lembre-se que o botão direito do mouse está pressionado, para manter a hipervelocidade) era para mudar de direção, mas não muda! Ela continua movendo-se para esquerda! Help me, please!!!

Lembrando que eu coloquei que se speed>20, faça speed=20, para manter a velocidade em 20 na hipervelocidade (sem a hipervelocidade eu fiz a mesma coisa, porém com velocidade=12. Os movimentos de direção coloquei nos eventos keyboard, e como ações coloquei o movimento livre, relativo, definindo o angulo para cada letra correspondente a direção.

Ricardo Alves

Número de Mensagens : 14
Data de inscrição : 05/09/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Problemas com o mouse (botão direito)

Mensagem por KinKing em Sex 07 Set 2012, 13:42

Só pra ter certeza: ângulo 0 = direita, 90 = cima, 180 = esquerda, 270 = baixo, certo?

Você está mudando o ângulo sem "relativo?"

Você quer que a nave gire ou simplesmente se mova para a direção, independente do ângulo próprio?

KinKing

Número de Mensagens : 416
Data de inscrição : 29/05/2008
Reputação : 16
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://felipejoys.webnode.com

Voltar ao Topo Ir em baixo

Resolvido Re: Problemas com o mouse (botão direito)

Mensagem por Ricardo Alves em Sex 07 Set 2012, 13:56

Os ângulos são esses mesmos que você disse. Os ângulos são relativos (assim o movimento é mais suave e realista), mas quando atinge velocidade 12, ela se mantém no 12, como disse.

Já coloquei para minha nave girar para onde a seta do mouse está (ela só gira, mas se eu quiser movimentar a nave, tenho que apertar as teclas de direção, que são w,s,a,d). Quero também que ela se mova para a nova direção ao trocar de direção (ex.: se eu tava apertando "a", que é para esquerda, soltar, e apertar "d", quero que vá para direita, mesmo mantendo o botão do mouse direito pressionado para manter a hipervelocidade, independentemente do ângulo no qual se encontra).

O ângulo da nave não importa, pois ela sempre está virado para a setinha do mause. Aí eu posso por exemplo andar para trás e mirar para frente, caso a nave inimiga esteja na minha frente. Já agora para o movimento, coloquei os ângulos que você disse, e relativo.

Ricardo Alves

Número de Mensagens : 14
Data de inscrição : 05/09/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Problemas com o mouse (botão direito)

Mensagem por KinKing em Sex 07 Set 2012, 14:26

O que eu acredito que pode ser o problema (porque você está explicando a teoria mas não está mostrando os códigos) é você não estar usando a variável direction.

image_angle é só o sprite: não muda a direção de navegação da sua nave. Com direction que você faz isso. Então se toda a tecla que você aperta apenas aumenta a speed, ela só vai para a esquerda mesmo, que é a direção inicial.

Veja este gmk, deve ser algo como você quer. Clique aqui!

Para andar de acordo com a direction do objeto, acredito que motion_add/motion_set é o que você procura.

KinKing

Número de Mensagens : 416
Data de inscrição : 29/05/2008
Reputação : 16
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://felipejoys.webnode.com

Voltar ao Topo Ir em baixo

Resolvido Re: Problemas com o mouse (botão direito)

Mensagem por Ricardo Alves em Sex 07 Set 2012, 14:57

O ângulo do sprite está certo, está sempre voltado para a setinha do mause. Mas eu não quero que ele vá para a setinha automaticamente. Quero que ele vá para para direção que eu definir (apertando as teclas w,a,s,d). Seria assim:

no step coloca o código:
Código:
image_angle=point_direction(x,y,mouse_x,mouse_y)
e coloca fricção 0.3 não relativa (sem ser código).

Crie evento keyboard letter "A" move free, direction 180, speed 0.7, relativo (sem ser código).
Crie evento keyboard letter "D" move free, direction 0, speed 0.7, relativo (sem ser código).
Crie evento keyboard letter "S" move free, direction 270, speed 0.7, relativo (sem ser código).
Crie evento keyboard letter "W" move free, direction 90, speed 0.7, relativo (sem ser código).

Crie evento Glob right button (mouse>glob mouse>glob right button) e coloca o código:
Código:
speed+=1;
if(speed>25){speed=25}

Fiz aqui mas não deu para enviar pq ainda não tenho servidor para armazenar.

Ao fazer aumentar speed se pressionar botão direito do mouse, o bonequinho só vai para uma direção, e não muda conforme eu mudo as teclas (com o botão direito do mause continuamente pressionado). Só muda quando eu solto o botão (desativando a hipervelocidade), pressiono uma tecla de direção que quero e pressiono o botão hipervelocidade novamente.

Quero trocar de direção sem precisar de soltar o botão direito do mause.

Ricardo Alves

Número de Mensagens : 14
Data de inscrição : 05/09/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Problemas com o mouse (botão direito)

Mensagem por KinKing em Sex 07 Set 2012, 15:29

Eu pesquisei e testei, cheguei a uma conclusão:

Seu objeto está sempre "virado" para a esquerda, independente do movimento ou da imagem. Ao acionar a propulsão, ele invariavelmente irá para a esquerda, pois você está adicionando quantidades grandes à velocidade dele e motion dele para a esquerda.

Analogia:

Imagine que você está de pé no meio da sala. Alguém te empurra para a direita, mas você não vira, apenas é jogado para a direita. Ou para a esquerda, ou para cima, mas sempre virado pro mesmo ponto. É isso que está acontecendo. Porque o seu código de Draw (image_angle) não interfere na lógica do objeto (direction).

O que eu recomendo:

Create -> velocidadeMaxima = 12
Mouse click -> velocidadeMaxima = 20
Mouse release -> velocidadeMaxima = 12
Step -> se "speed>velocidadeMaxima", faça "speed -= 2" (-= subtrai)

Isso fará simplesmente alterar a velocidade máxima do objeto... não sei bem se é o que você quer, mas em todo caso acho você não vai conseguir apenas alterando a variável speed.

EDITADO para alterar explicações! (está em negrito!)

KinKing

Número de Mensagens : 416
Data de inscrição : 29/05/2008
Reputação : 16
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://felipejoys.webnode.com

Voltar ao Topo Ir em baixo

Resolvido Re: Problemas com o mouse (botão direito)

Mensagem por Ricardo Alves em Sex 07 Set 2012, 15:58

CARA, TA QUASE, É ISSO MESMO, ESTE É EXATAMENTE O PROBLEMA, E VOCÊ RESOLVEU!!! cheers

Só que tipo (tinha que ter um porém né...) em mouse click eu coloquei glob right buttom (é o único que funcionou eu acho). Só que ao despressionar o botão do mause e movimentar o bichinho normalmente, a velocidade não volta ao normal, continua grande.


Ricardo Alves

Número de Mensagens : 14
Data de inscrição : 05/09/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Problemas com o mouse (botão direito)

Mensagem por Markituh em Sex 07 Set 2012, 16:04

Bom, o correto é usar o Global Mouse mesmo, já que o evento normal requer que você clique na sprite/mask do objeto. Será que ele não está voltando porque você está usando Mouse Released ao invés de Global Mouse Released? Verifique isso aí.

Abraços!

___________

"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

Resolvido Re: Problemas com o mouse (botão direito)

Mensagem por Ricardo Alves em Sex 07 Set 2012, 16:14

CARA, EU CONSEGUI!!! CONSEGUI FAZER!!! ALIÁS, VC CONSEGUIU!!! Vc é um anjo kkkkk. Muitíssimo obrigado, se quiser bolo pode vim rsrsrsrrs. Te dou 1000 pts!!! cheers Agradeço também ao Markituh.

Mas tipo, eu não intendi direito a causa do problema, porquê meu objeto está sempre virado para a esquerda e como assim image_angle não interfere em direction? Eu usando daquele jeito na fórmula está errado?

Ricardo Alves

Número de Mensagens : 14
Data de inscrição : 05/09/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Problemas com o mouse (botão direito)

Mensagem por Markituh em Sex 07 Set 2012, 16:45

Opa Ricardo, sobre essa questão de não interferir... simplificando:

- image_angle é a rotação da sprite do objeto.
- direction é a direção a qual as coordenadas lógicas/a localização do objeto será atualizada a cada frame.

Pelo que vi no seu código, o conflito poderia estar na forma como você está fazendo o movimento; mas já que você conseguiu resolver, tá tudo certo. Tô um tempo ser mexer no GM, aí perdi as manhas, sabe como é.

___________

"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

Resolvido Re: Problemas com o mouse (botão direito)

Mensagem por Ricardo Alves em Sex 07 Set 2012, 17:18

Certo, é sempre bom saber os conceitos. No caso eu posso fazer

Código:
image_angle=point_direction(x,y,mouse_x,mouse_y)

Pois point_direction retorna as coordenadas em ângulo para onde a setinha do mouse está. Logo eu igualando-a com image_angle, o sprite ficará rotacionado para no mesmo ângulo onde a seta se encontra.

Ricardo Alves

Número de Mensagens : 14
Data de inscrição : 05/09/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Problemas com o mouse (botão direito)

Mensagem por Markituh em Sex 07 Set 2012, 19:48

Exato. point_direction, para ficar mais explicadinho, vai retornar o coeficiente angular de uma reta dados pontos {x1, y1} e {x2, y2}. Então, para melhor efeito, seria interessante colocar o offset/origem da sprite (no editor de sprites) para o centro da nave.

Mas lembrando, já que o ângulo 0 é para a direita, é interessante que você coloque a sprite da nave no mesmo sentido. Ou, você poderia deixar para cima mesmo e igualar image_angle ao valor retornado por point_direction, menos 90º - tendo em mente que um valor positivo rotaciona para a esquerda , e um negativo, para a direita. Pois bem, é sempre bom saber um pouco de teoria para se dar bem na prática.

Abraços e bom projeto! Happy

___________

"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

Resolvido Re: Problemas com o mouse (botão direito)

Mensagem por Conteúdo patrocinado Hoje à(s) 10:34


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