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.