Criar mapa de imagem para seleção de fases

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

Resolvido Criar mapa de imagem para seleção de fases

Mensagem por dangelobr em Qui 16 Abr 2015, 08:27

Existe algum modo prático de criar um mapa de imagem para seleção de fases?
Digamos por exemplo que tenho um sprite com os botões de todas as fases do meu jogo, e quero mapear a area de clique de cada botão para direcionar a fase correspondente.
Pensei em fazer o tratamento na mão, mas se houver alguma forma já oferecida pelo GM, melhor.


Última edição por dangelobr em Seg 04 Maio 2015, 08:31, editado 1 vez(es)

dangelobr

Ranking : Sem avaliações
Número de Mensagens : 28
Data de inscrição : 25/03/2015
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por matheusco em Qui 16 Abr 2015, 11:21

O evento do mouse (todos, exceto o Global) checam se você clicou no sprite. Se quiser fazer isso no Step é checar se há colisão do sprite com o ponto (mouse_x, mouse_y) e verificar se houve clique.

matheusco

Número de Mensagens : 395
Idade : 23
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por dangelobr em Qui 16 Abr 2015, 12:07

Isso é tranquilo, agora imagina que tenho um unico sprite como no abaixo. Vou ter que determinar o intervalo x e y de cada botão para saber qual foi clicado. Queria saber se tem uma forma mais pratica, ou qual a forma mais comum  de se fazer isso.


dangelobr

Ranking : Sem avaliações
Número de Mensagens : 28
Data de inscrição : 25/03/2015
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por matheusco em Qui 16 Abr 2015, 12:18

Mas eu acabei de dizer... é a instância que identifica o clique, não o sprite em si. Do mesmo jeito que você enumera as instâncias, você faz uma room alvo diferente pra quando clicar ir pra ela.

matheusco

Número de Mensagens : 395
Idade : 23
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por Zero. em Qui 16 Abr 2015, 12:31

Utilize esta função para saber se o mouse ta colidindo com o obj :
Código:
if collision_point(mouse_x,mouse_y,object_index,1,0)
{
   //ações
}

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por dangelobr em Qui 16 Abr 2015, 13:49

Acho que não me expressei direito, mas eu tenho 1 sprite e 1 objeto.
Tem como vou definir em qual "botão" foi clicado sem ter definido previamente as coordenadas de cada um dos botões desenhados neste sprite?

Alguns softwares utilizam os chamados mapa de imagem, onde são mapeadas estas coordenadas previamente, e depois é feito referencia a estes mapas.

dangelobr

Ranking : Sem avaliações
Número de Mensagens : 28
Data de inscrição : 25/03/2015
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por Mateus O de Andrade em Qui 16 Abr 2015, 14:19

Boa tarde dangelobr,
Infelizmente acho que não temos essa opção no GM(pelo menos não automaticamente).
Lhe aconselho a usar a técnica do Zero em conjunto com a criação de um sprite para cada faze. depois basta posicionar cada sprite sobre o local desejado de sua imagem e marca-los como invisíveis. Então é só inserir as ações no código que o colega zero lhe passou. Essa é a maneira mais prática que encontrei.
Mas vamos esperar mais comentários.

Abração carinha.

Mateus O de Andrade

Ranking : Nota D
Número de Mensagens : 399
Idade : 31
Data de inscrição : 25/03/2014
Reputação : 37
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: Criar mapa de imagem para seleção de fases

Mensagem por itarodrigo em Qui 16 Abr 2015, 14:25

é possivel sim, use o código:
Código:
point_in_rectangle(px, py, x1, y1, x2, y2);
//px = x do mouse
//py = y do mouse
//x1 = x do inicio do retangulo
//y1 = y do inicio do retangulo
//x2 = x do final do retangulo
y2 = y do final do retangulo

e

Código:
mouse_check_button_pressed(numb);
//numb é o botao do mouse

Exemplo:

Código:
if (mouse_check_button_pressed(mb_left)) and (point_in_rectangle(mouse_x, mouse_y, 10, 10, 100, 100)){
//clicou no retangulo 1
}
//o código acima verifica se o mouse clicou com o botao esquerdo do mouse em um retangulo iniciado no ponto 10,10 e finalizado no ponto 100,100

if (mouse_check_button_pressed(mb_left)) and (point_in_rectangle(mouse_x, mouse_y, 110, 110, 200, 200)){
//clicou no retangulo 2
}
//o código acima verifica se o mouse clicou com o botao esquerdo do mouse em um retangulo iniciado no ponto 110,110 e finalizado no ponto 200,200

as coordenadas voce verifica de acordo com sua imagem.

caso queira, crie um objeto e no evento draw, use o código:
Código:
draw_rectangle(x1, y1, x2, y2, outline);
//desenha um retangulo

use assim:
Código:
draw_rectangle(10, 10, 100, 100, true);

veja se ele desenhou o quadrado exatamente em cima do que voce quer. caso positivo, use as coordenadas, senao, altere as coordenadas.

itarodrigo

Número de Mensagens : 599
Idade : 33
Data de inscrição : 28/08/2010
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

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por dangelobr em Qui 16 Abr 2015, 14:31

Essa era mais ou menos a minha ideia original. Agora ficou mais fácil.
O que eu queria evitar era uma grande quantidade de Sprites.

Agradeço a todos pela ajuda!!

Abraço.

dangelobr

Ranking : Sem avaliações
Número de Mensagens : 28
Data de inscrição : 25/03/2015
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por Mateus O de Andrade em Qui 16 Abr 2015, 14:39

Na verdade não serão vários sprites, me expressei erroneamente. Na verdade vai ser assim: Se você tem 10 fazer serão 10 OBJETOS e não SPRITES.

Mateus O de Andrade

Ranking : Nota D
Número de Mensagens : 399
Idade : 31
Data de inscrição : 25/03/2014
Reputação : 37
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: Criar mapa de imagem para seleção de fases

Mensagem por itarodrigo em Qui 16 Abr 2015, 14:57

com um objeto apenas irá funcionar, siga meu exemplo.

se tiver duvidas em como fazer, basta me dizer.

itarodrigo

Número de Mensagens : 599
Idade : 33
Data de inscrição : 28/08/2010
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

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por Limalokão em Qui 16 Abr 2015, 20:49

Bom... Eu obtive a ajuda de duas pessoas para tentar de ajudar haha http://gmbr.forumeiros.com/t32167-bugleft-mouse-released

O que eu fiz você pode ver aqui: https://dl.dropboxusercontent.com/u/8556803/Para_Forum/Teste%20Mapa.gmx.rar

Uma explicação é: Criar apenas um objeto para ser o local do seu mapa, se for clicado em cima dele, ele vai para a fase selecionada.

Usei a opção creation code dentro da room mapa, em cada um deles na variável sala. Veja o que acha... GMS

Limalokão

Ranking : Nota C
Número de Mensagens : 803
Idade : 24
Data de inscrição : 24/11/2009
Notas recebidas : C
Reputação : 10
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: Criar mapa de imagem para seleção de fases

Mensagem por saim em Qui 16 Abr 2015, 20:58

Muitos objetos iguais, com variáveis diferentes... mole! Vai ter que escrever um bocado, vai dar trabalho. Mas ter trabalho não é sinônimo de ter dificuldade.
A forma mais rápida de explicar é:
1 - na room, coloque todos os objetos-botão
2 - (ainda na edição da room) clique com o botão direito do mouse sobre cada botão, selecione a opção "creation code" e defina uma variável (vou usar "room_pra_ir") com o valor da room que é pra ir. Exemplo:
Código:
room_pra_ir := room_fase_2;
3 - Agora na edição do objeto-botão, no evento de clicar sobre ele, coloque o código
Código:
room_goto(room_pra_ir);

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por Zero. em Sex 17 Abr 2015, 00:35

Era só isso que ele queria? '-'
Acho que eu não entendi o que ele quis dizr direito.
Achei msm que fosse só pra saber se o mouse ta colidindo.
A forma do saim ta bem explicada Very Happy

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por itarodrigo em Sex 17 Abr 2015, 09:02

Mini Tutorial:

Crie um objeto com a seguinte imagem:


Verifique na imagem as coordenadas x e y dos quadrados que serão verificados (mapeei 3 deles).

No evento Step:
Código:
if (mouse_check_button_pressed(mb_left)) and (point_in_rectangle(mouse_x,mouse_y,16,18,52,54)){
room_goto(fase_1);
}

if (mouse_check_button_pressed(mb_left)) and (point_in_rectangle(mouse_x,mouse_y,71,18,107,54)){
room_goto(fase_2);
}

if (mouse_check_button_pressed(mb_left)) and (point_in_rectangle(mouse_x,mouse_y,127,18,162,54)){
room_goto(fase_3);
}

A lógica é simples, o código irá verificar se o botão esquerdo do mouse foi clicado e se está dentro do quadrado específico.

Não há necessidade de criar vários objetos para isso.

Mas, caso ache a solução dos outros amigos mais prática, você decide.

itarodrigo

Número de Mensagens : 599
Idade : 33
Data de inscrição : 28/08/2010
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

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por dangelobr em Sex 17 Abr 2015, 11:07

Obrigado a todos que me ajudaram com varias dicas interessantes, em especial ao colega itarodrigo que captou a ideia original, de manter apenas um objeto e inclusive fez este belo mini tutorial.

Abraço!

dangelobr

Ranking : Sem avaliações
Número de Mensagens : 28
Data de inscrição : 25/03/2015
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por dangelobr em Sex 17 Abr 2015, 12:38

Testei agora e tiver fazer uma pequena alteração no código para funcionar, adicionando a descrição de x e y.

Precisei fazer assim ou não reconhecia o retangulo:
point_in_rectangle(mouse_x,mouse_y,x+0,y+0,x+100,y+100)

Agora é só fazer o sprite das fases, definir as coordenadas e finalizar.

Valeu novamente e todas pela ajuda.


dangelobr

Ranking : Sem avaliações
Número de Mensagens : 28
Data de inscrição : 25/03/2015
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por Limalokão em Sex 17 Abr 2015, 14:20

dangelobr, se acaso quiser, você pode usar a minha engine que te mandei com as opções do saim... Daria menos trabalho.

Não desmerecendo a ajuda do itarorodrigo, mas não seria preciso calcular os x's e os y's. Abraço.

Limalokão

Ranking : Nota C
Número de Mensagens : 803
Idade : 24
Data de inscrição : 24/11/2009
Notas recebidas : C
Reputação : 10
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: Criar mapa de imagem para seleção de fases

Mensagem por Isaque Onix em Dom 19 Abr 2015, 01:47

só pra constar, da pra fazer de forma mais facil... usando for, algumas arrays por faze (pode ser feito com ini's, caso sejam fazes "desbloqueaveis") e uma variavel de contagem inicial.

exemplo, o for:

for(i=INICIO; i
INICIO = a primeira faze na tela, exemplo, se tiver 10 fazes por tela, INICIO va ser igual a 10*tela (10,20,30,40...)

INICIO+QUANTIDADE_DE_FAZES_NA_TELA = a quantidade de itens na tela, se for 10, vai de INICIO até INICIO+10...

e assim vai... acho que é o metodo mais facil, mais só comentei atoa mesmo, para verem um metodo diferente :p flwz

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Resolvido Re: Criar mapa de imagem para seleção de fases

Mensagem por Conteúdo patrocinado Hoje à(s) 18:25


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