O Drag'n'Drop (Arrastar e Soltar) é bastante utilizado em jogos em que a principal forma de interação é utilizando o mouse. Por exemplo, em todos RPGs que conheço, que fazem uso do mouse, é possível equipar itens arrastando-os para dentro de um inventário. Este tutorial tem como objetivo ensinar como criar uma engine de Drag'n'Drop no Game Maker.
Este é um tutorial que acredito ser para usuários que tenham, pelo menos, conehcimento intermediário acerca das funções básicas oferecidas pelo Game Maker. Caso tenha dúvidas quanto a utilização de alguma função ou operador veja os Tutoriais para Iniciantes e a página de Funções.
A ideia é fazer com que quando clicarmos sobre um objeto o mesmo siga a posição do mouse; quando clicarmos novamente precisamos fazer com que ele pare de se mover.
Exemplo:
obj_cursor
Create Event
item_segurado = noone
Step Event
if item_segurado != noone
{
item_segurado.x = mouse_x
item_segurado.y = mouse_y
}
Global Left Pressed Event
nome = collision_point(mouse_x, mouse_y, all, true, true)
if item_segurado = noone && nome.arrastavel
{
item_segurado = nome
exit
}
if item_segurado != noone
{
item_segurado = noone
exit
}
obj_item
Create Event
arrastavel = true
Apesar de ser um pouco complexo, é bem simples entender pra que serve cada variável. A função collision_point retorna a id da instância que estiver sob o cursor quando clicamos com o botão esquerdo do mouse, depois disso o código verifica se estamos segurando algum item e, se não estivermos, checa se a instância é arrastável. Se não estivermos segurando algum item e a instância for arrastável, então o valor da variável "item_segurado" será a id conseguida através do collision_point.
Observação: É necessário declarar a variável "arrastavel" como true ou false para TODOS objetos que serão utilizados no jogo, pois se clicarmos sobre uma instância que não tenha essa variável o jogo irá travar.
se eu clicar fora de qualquer iten ta dando erro, como eu resolvo isso ?
ResponderExcluir