Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

[AJUDA] - Instancia com o mouse. Tópico resolvido

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Epipoca
Novato
Novato
Reações: 0
Mensagens: 11

[AJUDA] - Instancia com o mouse.

Mensagem por Epipoca » Sex Set 16, 2016 9:25 pm

Olá, amigos. Tudo bem? Bom, vai fazer duas semanas que estou estudando o game maker e ainda estou aprendendo algumas coisas. Mas meu maior problema agora é na lógica. Em meu jogo existe um menu ao lado, onde eu escolho um dos itens (clico nele(no meu caso é uma bomba)) e depois clico no mapa para instanciar ele na posição que eu desejo. Mas eu gostaria que o objeto ficasse recebendo a posição do mouse enquanto escolho o local. E é ai que eu não consigo raciocinar direito. Alguém poderia me dar uma ajudinha, não o código pronto, só o caminho das pedras de como eu poderia fazer isso?! Clicar num item a minha escolha no menu e depois clicar no mapa pra instanciar esse item que eu escolhi? Eu consigo chegar até certo ponto da lógica, como exemplo: Fazer o objeto seguir o ponteiro do mouse, mas na hora de instanciar ele no local desejado eu meio que estou bugando e nao consigo. 
Bom, se alguém puder me ajudar, eu agradeceria.

(Espero que o texto não tenha ficado muito confuso)

Atenciosamente,

Epipoca.
[Rachel:]
"Do you like our owl?"

[Deckard:]
"Is it artificial?"

[Rachel:]
"Of course it is"

Avatar do usuário
Denis Lemos
Membro
Membro
Reações: 0
Mensagens: 49

Re: [AJUDA] - Instancia com o mouse.  Tópico resolvido

Mensagem por Denis Lemos » Sáb Set 17, 2016 8:18 am

Você não precisa fazer o objeto(instância) seguir o ponteiro do mouse, e sim apenas desenhar uma
"sprite" referente ao objeto selecionado. Por exemplo:

Em obj_controle vc pode criar uma variável chamada "item" e dar um valor inicial de zero para ela. Cada valor dessa variável vai representar um item a ser criado, e também uma sprite a ser desenhada na posição do mouse quando estiver posicionando o item. Então quando clicar em um dos itens, vai mudar o valor dessa variável de acordo com o item clicado.
EX:
Evento Create do obj_controle.

Código: Selecionar todos

/*
item = 0;// Vai indicar que não tem nenhum item selecionado para criar.
item = 1;// Vai representar o item1.
item = 2;// Vai representar o item2.
item = 3;// Vai representar o item3.
E assim sucessivamente...
*/
item = 0;
No Evento Create de cada Item.

Código: Selecionar todos

/*
Note que o valor da variável esteItem tem que ser diferente para
cada um dos item e referente ao item que ele é.
*/
esteItem = 1;//Neste exemplo o item será o número item1.
Evento Step dos Itens.

Código: Selecionar todos

if (mouse_check_button_pressed(mb_left))//Se clicou o botão esquerdo do mouse
{
    if(position_meeting(mouse_x, mouse_y, self))//Se estiver em cima deste item.
    {
        obj_controle.item = esteItem;//muda o valor da variável item do objeto controle, referente a este objeto clicado.
    }
}
Por fim, agora que já temos o item sendo selecionado(ou não), vamos desenhar a sprite do item selecionado na posição do mouse, e criar o item na posição do mouse quando for clicado.
PS: Eu estou escrevendo aqui sem testar se funciona, então para tentar evitar algum erro, vamos fazer o item ser criado quando apertar o botão "direito" do mouse, para que ele não seja criado na mesma hora em que seleciona o item caso use o botão esquerdo as duas verificações aconteceriam ao mesmo tempo(selecionaria o item e criaria no mesmo instante).
No Evento Draw do obj_controle.

Código: Selecionar todos

if(item>0)//Se o valor do item for maior que zero. Então temos um item selecionado e pronto para ser criado
{
    switch (item)//Verifica o valor da variável item para comparação posterior.
    {
       case 1://Caso o valor da variável item seja 1;
       draw_sprite(sprite_do_item1, 0, mouse_x, mouse_y);//Desenha a sprite do item na posição do mouse.
       if (mouse_check_button_pressed(mb_right))//Se apertar o botão direito do mouse.
       {
          instance_create(mouse_x, mouse_y, obj_item1);//Cria o item1.
          item = 0;//Avisa que o item já foi criado para não desenhar mais a sprite. 
       }
          break;


       case 2://Caso  o valor da variável item seja 2.
       draw_sprite(sprite_do_item2, 0, mouse_x, mouse_y);//Desenha a sprite do item na posição do mouse.
       if (mouse_check_button_pressed(mb_right))//Se apertar o botão direito do mouse.
       {
           instance_create(mouse_x, mouse_y, obj_item2);//Cria o item2.
           item = 0;//Avisa que o item já foi criado para não desenhar mais a sprite. 
       }
          break;


       case 3:    
       draw_sprite(sprite_do_item3, 0, mouse_x, mouse_y);//Desenha a sprite do item na posição do mouse.
       if (mouse_check_button_pressed(mb_right))//Se apertar o botão direito do mouse.
       {
           instance_create(mouse_x, mouse_y, obj_item3);//Cria o item3.
           item = 0;//Avisa que o item já foi criado para não desenhar mais a sprite. 
       }
          break;
       //Você pode colocar quantas verificações de casos for preciso
    }
}
Existem outras formas bem melhores e eficientes de fazer isso, mas como vc é iniciante eu preferi explicar dessa maneira para não confundir muito.

Avatar do usuário
Epipoca
Novato
Novato
Reações: 0
Mensagens: 11

Re: [AJUDA] - Instancia com o mouse.

Mensagem por Epipoca » Sáb Set 17, 2016 3:12 pm

Cara, você me ajudou muito! Muito obrigado!! Aprendi bastante. Agradeço!
[Rachel:]
"Do you like our owl?"

[Deckard:]
"Is it artificial?"

[Rachel:]
"Of course it is"

Trancado

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes