Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Mgbu en Octubre 15, 2012, 09:41:26 PM

Título: Tomar en cuenta todas la instancias
Publicado por: Mgbu en Octubre 15, 2012, 09:41:26 PM
Quiero que un objeto ejecute un código, una vez para cada instancia de tal objeto. Es dificil de explicar, lo que quiero hacer es que cada bala se desvie con varios imanes, entonces tiene que calcular la atracción una vez para cada imán.
El código es así y fuanciona bien cuando hay un imán:
Citardir=point_direction(x,y,obj_iman.x,obj_iman.y)
dist=distance_to_point(obj_iman.x,obj_iman.y)
motion_add(dir,(50/(dist+1)))

Lo que pasa es que ahora quiero agregar muchos imanes, y obviamente sólo tiene el cuenta el primero creado
¿Cómo puedo hacer para que sea atraído por todos los imanes?

Otra forma sería con un "with obj_iman" pero como hago para hacerle motion_add a cada bala?
Título: Re:Tomar en cuenta todas la instancias
Publicado por: ferhand en Octubre 15, 2012, 11:21:09 PM
  Saludos Amigo Mgbu:


  ¡Muy buena pregunta!  8)   

  Precisamente tienes ya la respuesta: utilizar el "with". Una vez dentro de la clausula "with" no estás referenciando al objeto inicial sino en al objeto que llamaste dentro del "with". Por ejemplo:


 
Citarinstance_id = array_instance[1,2];   //  esto es un sugerencia...
 
  with (instance_id)                             //   a partir de esta línea estamos dentro de la instancia nombrada..
   {
        motion_add(dir,(50/(dist+1)))
   }


  Mi sugerencia es que tengas las "id" de las instancias en una lista o "array" y las llames según necesites.  8)

  Espero hayas entendido... Un abrazo... ;D
Título: Re:Tomar en cuenta todas la instancias
Publicado por: Mgbu en Octubre 16, 2012, 06:53:37 PM
Ah, gracias! ahí lo pude hacer con tus consejos, se me ocurrió poner la id en una variable global:
Citarglobal.tmp=id
with obj_iman {
    global.tmp.dir=point_direction(global.tmp.x,global.tmp.y,x,y)
    global.tmp.dist=distance_to_point(global.tmp.x,global.tmp.y)
    with global.tmp motion_add(dir,(50/(dist+1)))
}

Gracias!