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

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 05/09/2012
Número de Mensagens : 14
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Problemas com o mouse (botão direito)

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.
avatar
Data de inscrição : 29/05/2008
Número de Mensagens : 422
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://felipejoys.webnode.com

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

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?
avatar
Data de inscrição : 05/09/2012
Número de Mensagens : 14
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

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

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.
avatar
Data de inscrição : 29/05/2008
Número de Mensagens : 422
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://felipejoys.webnode.com

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

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.
avatar
Data de inscrição : 05/09/2012
Número de Mensagens : 14
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

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

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.
avatar
Data de inscrição : 29/05/2008
Número de Mensagens : 422
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://felipejoys.webnode.com

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

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!)
avatar
Data de inscrição : 05/09/2012
Número de Mensagens : 14
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

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

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.

avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

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

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

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

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!
avatar
Data de inscrição : 05/09/2012
Número de Mensagens : 14
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

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

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?
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

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

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

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

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 é.
avatar
Data de inscrição : 05/09/2012
Número de Mensagens : 14
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

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

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.
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

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

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

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

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
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