Hola, estoy intentando mover objetos con el mouse, mover objetos cuando solo hay uno en la pantalla no es un problema, pero si tengo varios ya la cosa cambia.
Por ejemplo, en mi caso tengo varias instancias del mismo objeto y básciamente cuando llamo a mi función scr_TakeObj está me coge no sólo el objeto que quiero sino además todas las instancias del mismo objeto. He modificado la función para que acepte la posición del objeto que estoy cogiendo y en principio sólo me coja ese, pero cuando paso por encima de una de las otras instancias me las pilla también. He probado de utilizar una variable global que sea global.carry_obj de tal manera que si no tengo objeto me la pone a 0 y si tengo me la pone a 1. El problema con eso es que en cuando cojo el objeto me la pone a 1 y ya no me lo mueve.
Pongo un ejemplo del código que utilizo
Tengo un script scr_TakeObj(x,y)
if (argument0-20)<= mouse_x and mouse_x<=(argument0+20) and (argument1-20)<= mouse_y and mouse_y<=(argument1+20)
{
x = mouse_x;
y = mouse_y;
}
y en mi objeto tengo un evento "step" con el siguiente código
if mouse_check_button(mb_left)
{
scr_TakeObj(x,y);
}
else
{
scr_DropObj(x,y);
}
La función scr_DropObj básicamente suelta el objeto dentro de una cuadrícula.
Así que resumiendo, necesito coger una única instancia del objeto y no soy capaz. Con el código tal cual coge el objeto más cercano a la posición del ratón pero según me acerco a las otras instancias las coge también. He probado varias cosas pero no soy capaz de hacer que haga lo que quiero, espero que podáis ayudarme, para que os hagais una idea de lo que intento, estoy tratando de programar un juego del estilo de candy crash desde cero.
Gracias de antemano
debes hacerlas globales.
ponle global.scrTakeObj y global.scr_DropObj
Lo he probado y no funciona, además scr_TakeObj y scr_DropObj son funciones no variables así que poniendo un global no consigue nada.
Gracias de todas maneras
diablos, olvide que tenas un script XD
podrias probar a que cuando clikees el objeto se active una variable nose, ej obj_move y que a la vez se active una variable global.obj_blocked aplicando a other.(lo que tu hiciste fue solo usar una variable global, pero eso afectaria a todas las instancias, lo que yo digo es usar una local para mover el objeto y otra global para mantener bloqueados a los otros)
como obj_move es local no afectara a las otras instancias. y como global.obj_blocked es global y aplica a other, afectara a las otras instancias pero no a la elegida.
y luego pones tu codigo entre if obj_move is true haga esto else if global.obj_blocked is true haga esto y/o esto
por ahi tambien te serviria declarar variables distintas para cada tipo de objeto ej:
global.obj_blocked_caramelorojo etc
Yo lo que utilizaría el evento de click del ratón de GameMaker y si quieres utilizar un código que se ejecutase al hacer funcionar el evento pulsando el botón del ratón.
el lo esta usando, el problema es que su script afecta a todas las instancias de un mismo objeto XD