Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
Duvida-Mover a tela usando o mouse
+2
Luan Maia
JoaoVanBlizzard
6 participantes
Página 1 de 1
Duvida-Mover a tela usando o mouse
Gostaria de saber como faz para mover a view ao clicar e arrastar o mouse sobre?ela, desde já agradeço.
JoaoVanBlizzard- Games Ranking :
Notas recebidas : B+B
Data de inscrição : 04/03/2012
Reputação : 144
Número de Mensagens : 1926
Prêmios :
x 0 x 0 x 0
x 1 x 2 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Unity
Re: Duvida-Mover a tela usando o mouse
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.
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- Games Ranking :
Notas recebidas : D+C+C+D
Data de inscrição : 01/07/2010
Reputação : 2
Número de Mensagens : 404
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Duvida-Mover a tela usando o mouse
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:
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
Re: Duvida-Mover a tela usando o mouse
Mouse Pressed:
- Código:
vpos = view_xview;
mpos = mouse_x;
- Código:
view_xview = vpos + mpos - mouse_x;
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Duvida-Mover a tela usando o mouse
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.ó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: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.
- Código:
x=mouse_x
y=mouse_y
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
- 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.
}
Gabreel- Data de inscrição : 02/10/2009
Reputação : 52
Número de Mensagens : 2232
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
- Javascript
- Outros
Re: Duvida-Mover a tela usando o mouse
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:
https://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.
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:
https://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- Games Ranking :
Notas recebidas : B+B
Data de inscrição : 04/03/2012
Reputação : 144
Número de Mensagens : 1926
Prêmios :
x 0 x 0 x 0
x 1 x 2 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Unity
Re: Duvida-Mover a tela usando o mouse
Pera aí, vou fazer um teste aqui!
Gabreel- Data de inscrição : 02/10/2009
Reputação : 52
Número de Mensagens : 2232
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
- Javascript
- Outros
Re: Duvida-Mover a tela usando o mouse
Tente isso :
Create:
Create:
- Código:
velocidade = 5; // Velocidade que a view moverá segundo o mouse.
nx = 0; ny = 0;
- 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
Re: Duvida-Mover a tela usando o mouse
Trfn: vou testar aqui
JoaoVanBlizzard- Games Ranking :
Notas recebidas : B+B
Data de inscrição : 04/03/2012
Reputação : 144
Número de Mensagens : 1926
Prêmios :
x 0 x 0 x 0
x 1 x 2 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Unity
Re: Duvida-Mover a tela usando o mouse
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:
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 Sáb 30 Nov 2013, 00:34, editado 7 vez(es) (Motivo da edição : Explicar melhor)
Luan Maia- Games Ranking :
Notas recebidas : D+C+C+D
Data de inscrição : 01/07/2010
Reputação : 2
Número de Mensagens : 404
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Duvida-Mover a tela usando o mouse
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;
}
Gabreel- Data de inscrição : 02/10/2009
Reputação : 52
Número de Mensagens : 2232
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
- Javascript
- Outros
Re: Duvida-Mover a tela usando o mouse
João, aprimorei o código. Agora está bem melhor :JoaoVanBlizzard escreveu:Trfn: vou testar aqui
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.
- 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;
EDIT
Coloquei um efeito ao movimentar a tela para deixar o "arrastar" mais suave.
Re: Duvida-Mover a tela usando o mouse
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.
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.
JoaoVanBlizzard- Games Ranking :
Notas recebidas : B+B
Data de inscrição : 04/03/2012
Reputação : 144
Número de Mensagens : 1926
Prêmios :
x 0 x 0 x 0
x 1 x 2 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Unity
Re: Duvida-Mover a tela usando o mouse
No meu caso, deveria ter colocado a view seguindo o objeto, mas como disse, daria na mesma! (: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.
Tópico fechado!
Gabreel- Data de inscrição : 02/10/2009
Reputação : 52
Número de Mensagens : 2232
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
- Javascript
- Outros
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos