Noviembre 05, 2009, 03:53:51 AM Ultima modificación: Noviembre 05, 2009, 12:44:31 PM por Nikoturf
Hola! soy muy principiante en GM.

Mi problema es este: quiero que el programa decida cu?l es la instancia m?s cercana a un objeto.
Escrib? esto:

cercaobjeto = instance_nearest(objeto.x, objeto.y, all)

Primera duda: ?Las variables hay que declararlas primero? (en este caso "cercaobjeto")

despu?s quiero cambiar una variable de esa instancia m?s cercana. Puedo utilizar el id de la variable "cercaobjeto"?

cercaobjeto.variable = 1

o deber?a ser (cercaobjeto).variable = 1  para que el punto no funcione como operador del id?

Mi idea es que todas las instancias tengan esa variable local con el mismo nombre, para ahorrar en escritura. Las diferenciar?a utilizando el id de la instancia.

Prob? esto y no me funcion?... aunque todav?a no prob? declarar la variable primero (tengo que llegar a casa para eso!)

Es muy confuso lo que escrib??

Desde ya muchas gracias y espero respuestas y cualquier sugerencia!

Primera duda: no necesariamente. Si la declaras (mediante var), el alcance de la variable ser? s?lo dentro de esa pieza de c?digo (y as? ahorras memoria), mientras que si no la declaras, permanecer? como parte de la instancia hasta que ?sta sea destruida.

Para cambiar una variable puedes usar sin problemas la id guardada en la variable cercaobjeto, tal como dices. El par?ntesis ser?a redundante en este caso ya que no hay confusi?n posible. Otra cosa ser?a si quieres leer una variable del "enemigo" de cercaobjeto, donde enemigo es la id del enemigo que guarda la variable. Ser?a as?:

(cercaobjeto.enemigo).variable

Los c?digos que has colocado son correctos, no veo por qu? no habr?a de funcionar, a menos que el problema est? en otro lado.


#2 Noviembre 05, 2009, 12:41:28 PM Ultima modificación: Noviembre 05, 2009, 01:18:40 PM por Nikoturf
Gracias! voy a seguir intentando y ver qu? estoy haciendo mal.

Hice un objeto para controlar el juego (lo puse en la room, pero con las casillas de solid y visible destildadas). Es aqu? donde agregu? "Ejecutar c?dico" en el evento create.

Ahora estuve probando y el problema parece ser que yo necesito comparar entre objetos cu?l es el m?s cercano y no entre las instancias de un mismo objeto. Se puede lograr con objetos en lugar de instancias de un mismo objeto?