Duvida-Mover a tela usando o mouse

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

Duvida-Mover a tela usando o mouse

Mensagem por JoaoVanBlizzard em Sex 29 Nov 2013, 19:03

Gostaria de saber como faz para mover a view ao clicar e arrastar o mouse sobre?ela, desde já agradeço. Happy

JoaoVanBlizzard

Ranking : Nota B
Número de Mensagens : 1925
Idade : 38
Data de inscrição : 04/03/2012
Notas recebidas : B+B
Reputação : 144
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: Duvida-Mover a tela usando o mouse

Mensagem por Luan Maia em Sex 29 Nov 2013, 21:26

A maneira mais porca, porem mais simples, que veio a minha cabeça é criar um objeto com uma sprite, mas deixar invisível, fazer com que o objeto siga o mouse quando estiver clicando e colocar para view seguir o objeto.
A outra maneira que pensei, que é mais "bonita", é salvar a posição inicial do mouse e da view (tanto as cordenadas X quanto as Y) em variáveis quando clicar, e enquanto está sendo clicado você pega a posição do X e do Y do mouse e faz a diferença da posição salva com a posição atual e adiciona a diferença à posição que a view estava antes de clicar com o mouse.


Última edição por Luan Maia em Sex 29 Nov 2013, 22:07, editado 1 vez(es)

Luan Maia

Ranking : Sem avaliações
Número de Mensagens : 399
Idade : 20
Data de inscrição : 01/07/2010
Notas recebidas : D+C+C+D
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://blogluanmaia.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: Duvida-Mover a tela usando o mouse

Mensagem por david199 em Sex 29 Nov 2013, 22:01

tente assm:
crie uma sprite(qualquer jeito),crie um objeto e nomeio do jeito que quiser, agora no evento mouse e no evento global left button coloque um código esse:
Código:
x=mouse_x
y=mouse_y
agora desmarque a opção visible agora na room, na aba setings aumente a room para um tamanho maior que 640X480 e depois va na aba views e lá marque a opção  enable the use of views e no view 0 marque aopção visible when in rooms starts e agora coloque para seguir o objeto criado anteriormente, feito isso nas caixas hbor e na vbor, na hbor coloque o resultado dessa conta: tamanho horizontal da view,dividido pra 2 e menos o tamanho da sprite. no meu deu 288,na vbor a mesma coisa mais é o tamanho vertical da view. agora coloque o objeto na room, e teste, clique e depois arraste e verá a room se movendo pro lado onde o mouse foi arrastado. se ajudei me ajude clicando no polegar pra cima ao lado esquerdo do meu avatar.se tiver algum erro me avisem.

david199

Número de Mensagens : 72
Idade : 15
Data de inscrição : 11/07/2013
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://gmrds.blogspot.com

Voltar ao Topo Ir em baixo

Re: Duvida-Mover a tela usando o mouse

Mensagem por PedroX em Sex 29 Nov 2013, 22:11

Mouse Pressed:

Código:
vpos = view_xview;
mpos = mouse_x;
Mouse Button

Código:
view_xview = vpos + mpos - mouse_x;
Não esqueça de criá-las no Create para não dar erro.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Duvida-Mover a tela usando o mouse

Mensagem por Gabreel em Sex 29 Nov 2013, 22:14

david199 escreveu:tente assm:
crie uma sprite(qualquer jeito),crie um objeto e nomeio do jeito que quiser, agora no evento mouse e no evento global left button coloque um código esse:
Código:
x=mouse_x
y=mouse_y
agora desmarque a opção visible agora na room, na aba setings aumente a room para um tamanho maior que 640X480 e depois va na aba views e lá marque a opção  enable the use of views e no view 0 marque aopção visible when in rooms starts e agora coloque para seguir o objeto criado anteriormente, feito isso nas caixas hbor e na vbor, na hbor coloque o resultado dessa conta: tamanho horizontal da view,dividido pra 2 e menos o tamanho da sprite. no meu deu 288,na vbor a mesma coisa mais é o tamanho vertical da view. agora coloque o objeto na room, e teste, clique e depois arraste e verá a room se movendo pro lado onde o mouse foi arrastado. se ajudei me ajude clicando no polegar pra cima ao lado esquerdo do meu avatar.se tiver algum erro me avisem.
Esse método não vai funcionar como o João quer. Apenas quando o mouse estiver EXATAMENTE em cima do objeto, e aliás, porque mudar o tamanho da room? o.ó

Então João, crie o objeto como falaram e você já deve ter imaginado, e no create coloque:

Código:
previousmx = x
previousmy = y
Aí coloque no end step (pra não houver atrasos no movimento).
Código:

if mouse_check_button(mb_left) {
// Temos que garantir que o mouse vai estar sempre exatamente com o mesmo X e Y do objeto, então:
previousmx = x; //É como se o mouse tivesse posicionado em cima do objeto.
previousmy = y;
x=previousmx-mouse_x; //Quando o mouse se mover 1 pra direita, a variável tomará valor de 1 para direita.
y=previousmy-mouse_y; //Mesma coisa que acima.
}
Estou sem o Game Maker pra testar, mas caso não funcione, entenda a lógica do código, e faça algumas alterações, pois isso deve funcionar! Happy

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Duvida-Mover a tela usando o mouse

Mensagem por JoaoVanBlizzard em Sex 29 Nov 2013, 23:15

Luan Maia:Eu também crio varias coisas no improviso, tem coisas que eu nem sei fazer mas faço ao meu modo, mas dessa vez eu gostaria de algo que tivesse funcionamento como se a tela tivesse sendo puxada pelo mouse mesmo.

david199: testei sua técnica, é a que eu pensaria em criar se fosse um improviso, mas o problema é que a tela vai andar conforme o objeto anda, eu quero que a tela anda se eu tivesse puxando ela

PedroX: sua técnica faz a tela mover-se de forma independente, não acompanha o mouse.

Gabreel: é quase isso, eu queria algo parecido com o desse jogo do moonliware:

http://gmbr.forumeiros.com/t27435-mestre-dos-obstaculos-windows-e-android?highlight=mestre+dos+obstaculos

quando você clica na tela com o mouse e arrasta a tela anda, eu queria saber como se faz isso.

JoaoVanBlizzard

Ranking : Nota B
Número de Mensagens : 1925
Idade : 38
Data de inscrição : 04/03/2012
Notas recebidas : B+B
Reputação : 144
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: Duvida-Mover a tela usando o mouse

Mensagem por Gabreel em Sex 29 Nov 2013, 23:34

Pera aí, vou fazer um teste aqui!

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Duvida-Mover a tela usando o mouse

Mensagem por TRFN em Sex 29 Nov 2013, 23:55

Tente isso :

Create:
Código:
velocidade = 5; // Velocidade que a view moverá segundo o mouse.
nx = 0; ny = 0;
Step:
Código:
if(mouse_check_button_pressed(mb_left))then
  begin
    nx = mouse_x;
    ny = mouse_y;
  end
else if(mouse_check_button_released(mb_left))then
  begin
    view_xview += mouse_x - nx;
    view_yview += mouse_y - ny;
    nx = 0;
    ny = 0;
  end
Pelo o que compreendi e algo assim que você precisa.

___________



TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Re: Duvida-Mover a tela usando o mouse

Mensagem por JoaoVanBlizzard em Sab 30 Nov 2013, 00:02

Trfn: vou testar aqui

JoaoVanBlizzard

Ranking : Nota B
Número de Mensagens : 1925
Idade : 38
Data de inscrição : 04/03/2012
Notas recebidas : B+B
Reputação : 144
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: Duvida-Mover a tela usando o mouse

Mensagem por Luan Maia em Sab 30 Nov 2013, 00:07

Acho que você não entendeu o que falei. Do segundo modo que falei eu testei aqui e funcionou bem, só tive que dar uma desacelerada. Eu cheguei a jogar esse jogo do Molinware no Android e pelo que lembro é isso.
Coloque isso no step de um objeto:
Código:

desacelerador = 1.5; //diminui a velocidade com que se mexe, quanto maior for, menor será a velocidade e se colocar valor negativo inverte o "puxamento"
if (mouse_check_button_pressed(mb_left))
{
    //aqui salvo as variáveis no começo como falei
    viewx = view_xview[0];
    viewy = view_yview[0];
    mousex = mouse_x;
    mousey = mouse_y;
}
else if (mouse_check_button(mb_left))
{
    //aqui faço a cordenada da  view ser a soma da posição inicial com a diferença da posição inicial do mouse com a atual, só adicionei o desacelerador de diferente do que tinha falado
    view_xview[0] = viewx+(mousex-mouse_x)/desacelerador;
    view_yview[0] = viewy+(mousey-mouse_y)/desacelerador;
}


Última edição por Luan Maia em Sab 30 Nov 2013, 00:34, editado 7 vez(es) (Razão : Explicar melhor)

Luan Maia

Ranking : Sem avaliações
Número de Mensagens : 399
Idade : 20
Data de inscrição : 01/07/2010
Notas recebidas : D+C+C+D
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://blogluanmaia.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: Duvida-Mover a tela usando o mouse

Mensagem por Gabreel em Sab 30 Nov 2013, 00:08

Cheguei à um código (bem melhor quando se pode testá-lo hehe)

Código:
if x < round(view_wview/2) x = round(view_wview/2);
if y < round(view_hview/2) y = round(view_hview/2);
if x > room_width x = room_width;
if y > room_height y = room_height; //Todas as verificações pra não travar nos cantos


if mouse_check_button(mb_left)  {
// Temos que garantir que o mouse vai estar sempre exatamente com o mesmo X e Y do objeto, então:
if(x >= round(view_wview/2) && y >= round(view_hview/2) && x <= room_width && y <= room_height){
    x+=(previousmx-mouse_x)*0.6; //Quando o mouse se mover 1 pra direita, a variável tomará valor de 1 para direita.
    y+=(previousmy-mouse_y)*0.6; //Mesma coisa que acima, NOTA: o 0.6 é para deixar mais suave.
}
}else{
previousmx = mouse_x; //É como se o mouse tivesse posicionado em cima do objeto.
previousmy = mouse_y;
}
O código é parecido com o do TRFN, e tem um pequeno bug, mas acho que tu consegue resolver a partir disso!

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Duvida-Mover a tela usando o mouse

Mensagem por TRFN em Sab 30 Nov 2013, 00:13

JoaoVanBlizzard escreveu:Trfn: vou testar aqui
João, aprimorei o código. Agora está bem melhor :

Create
Código:
velocidade = .85; // Velocidade que a view moverá segundo o mouse. Numero entre 0 e 1 [ex: .54 ou 0.54]
nx = mouse_x; ny = mouse_y; lmx = nx; lmy = ny; // Variáveis para calculo e etc.
Step
Código:
/* Verifica se o mouse está se movendo */

if(lmx <> mouse_x || lmy <> mouse_y)then mouse_move = true;
else begin mouse_move = false end

lmx = mouse_x;
lmy = mouse_y;

/* Checa o clique inicial */

if( mouse_check_button_pressed( mb_left ) )then
  begin
    nx = mouse_x;
    ny = mouse_y;
    vel = velocidade * .05;
  end

/* Se mover o mouse e segurar */

else if( mouse_move && mouse_check_button( mb_left ) )then
  begin
    view_xview += round( ( nx - mouse_x ) * vel );
    view_yview += round( ( ny - mouse_y ) * vel );
    vel = min( vel + velocidade * .05, velocidade );
  end
 
if( !mouse_move )then vel = velocidade * .05;
A vantagem e que ele não só checa o movimento da tela, mas também a extensão do movimento e ainda há aceleração continua no mesmo.

EDIT

Coloquei um efeito ao movimentar a tela para deixar o "arrastar" mais suave.

___________



TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Re: Duvida-Mover a tela usando o mouse

Mensagem por JoaoVanBlizzard em Sab 30 Nov 2013, 00:38

Gabreel: seu código está movendo o objeto que execulta o mesmo e não a tela, mas acho que se eu trocar os valores x & y por funções view_xview e view_yview ja consigo resolver

Luan Maia: eu testei seu código, funcionou, mas os objetos dão uma pequena tremidinha, mas eu entendi, é só mudar o valor da desaceleração

TRFN: seu código funcionou bem como eu queria, entretanto, para todos os códigos a view parece ignorar o campo limite do jogo , mas acredito que basta eu criar um código de inicio de valor e limitar de acordo com o tamanho da minha room, valeu pela ajuda galera,e pelo esforço de todos, agora já posso dar continuidade a meu jogo. Very Happy

JoaoVanBlizzard

Ranking : Nota B
Número de Mensagens : 1925
Idade : 38
Data de inscrição : 04/03/2012
Notas recebidas : B+B
Reputação : 144
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: Duvida-Mover a tela usando o mouse

Mensagem por Gabreel em Sab 30 Nov 2013, 00:55

JoaoVanBlizzard escreveu:Gabreel: seu código está movendo o objeto que execulta o mesmo e não a tela, mas acho que se eu trocar os valores x & y por funções view_xview e view_yview ja consigo resolver

Luan Maia: eu testei seu código, funcionou, mas os objetos dão  uma pequena tremidinha, mas eu entendi, é só mudar o valor da desaceleração

TRFN: seu código funcionou bem como eu queria, entretanto, para todos os códigos a view parece ignorar o campo limite do jogo , mas acredito que basta eu criar um código de inicio de valor e limitar de acordo com o tamanho da minha room, valeu pela ajuda galera,e pelo esforço de todos, agora já posso dar continuidade a meu jogo. Very Happy
No meu caso, deveria ter colocado a view seguindo o objeto, mas como disse, daria na mesma! (:

Tópico fechado!

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Duvida-Mover a tela usando o mouse

Mensagem por Conteúdo patrocinado Hoje à(s) 18: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