quiero hacer que la funcion instance_nearest no tome en cuenta la instancia que tengo en la misma posicion que el objeto que llama a la funcion

alguna idea??? :(

Pod?s desactivarla moment?neamente. As? instance_nearest no la toma en cuenta.
O pod?s usar ?ste script.
Vim.

Tambi?n podes usar este script, que hasta donde pude probar se ejecuta mucho mas r?pido que el que sugiere Wadk.

//Encuentra la instancia mas cercana que no seas vos mismo

// Ej: instance_nearest_id(x,y,obj)
var xx,yy,n,ds,ins;
xx = argument0;
yy = argument1;
n = instance_number(argument2);
ds = ds_priority_create();

with (argument2) ds_priority_add(ds,id,sqr(x-xx)+sqr(y-yy));

ds_priority_delete_min(ds);

ins = ds_priority_find_min(ds);

ds_priority_destroy(ds);
return ins;

aver a ver lo logro comprender del todo esos codigos


bueno quiero que una variable tome la id de la instancia mas cercana de un mismo tipo de objetos excepto la que tengo en mi misma posicion y lo hago asi

variable=instance_nearest(x,y,obj1)

siendo obj1 un objeto diferente al que llamala funcion, pero no quiero que me reconozco a la instancia de ob1 que este en la misma posicion del que llama a la funcion

Pon? el codigo de Kraken en un script y llamalo instance_nearest_id. Despu?s us? este c?digo:
instance_nearest_id(x,y,obj1);
y listo.
Vim.

bueno, si, el codigo funciona bien, sin embargo me di cuenta que no es lo que necesito... gracias de todas formas..

planteare de una manera diferente no  se si haga falta crear otro tema:

quiero crear unos mu?equitos (personas aleatorias) que se muevan a puntos aleatorios

pense en hacerlo colocando obejtos invisibles por todos lados y que se vayan al mascercano sin embargo al usar ese codigo que m dieron seva al mas cercano, lo ignora un step y despues regresa...

quiero que se vaya de uno a otro y asi para dar la sensacion de movimiento aleatorio

Bueno, la verdad, no ented?, pero leyendo tus anteriores posts creo que ahora si entiendo a lo que te refer?as. Vas a tener que usar el script que puse yo:
/*
**  Usage:
**      inst = instance_nth_nearest(x,y,obj,n);
**
**  Arguments:
**      x,y       a point
**      obj       an object_index, or keyword "all"
**      n         proximity
**
**  Return:
**      inst      (n)th nearest instance id of type
**                (object) to the given point (x,y),
**                or keyword "noone" if none found.
**
**  GMLscripts.com
*/
{
    var pointx,pointy,object,n,list,nearest;
    pointx = argument0;
    pointy = argument1;
    object = argument2;
    n = argument3;
    n = min(max(1,n),instance_number(object));
    list = ds_priority_create();
    nearest = noone;
    with (object) ds_priority_add(list,id,distance_to_point(pointx,pointy));
    repeat (n) nearest = ds_priority_delete_min(list);
    ds_priority_destroy(list);
    return nearest;
}

llamalo instance_nth_nearest y usalo as?:
variable=instance_nth_nearest(x,y,obj1,2);
Vim.

Cita de: deathmetal en Enero 02, 2010, 03:33:21 AM
bueno, si, el codigo funciona bien, sin embargo me di cuenta que no es lo que necesito... gracias de todas formas..

planteare de una manera diferente no  se si haga falta crear otro tema:

quiero crear unos mu?equitos (personas aleatorias) que se muevan a puntos aleatorios

pense en hacerlo colocando obejtos invisibles por todos lados y que se vayan al mascercano sin embargo al usar ese codigo que m dieron seva al mas cercano, lo ignora un step y despues regresa...

quiero que se vaya de uno a otro y asi para dar la sensacion de movimiento aleatorio

?Los puntos aleatorios son puntos concretos en una room o simplemente quieres decir que vayan a posiciones aleatorias dentro de una room?

En el primer caso, lo mas facil seria definir una "x" y una "y" destino aleatoriamente y despues cuando el mu?equito la alcance definir otra direccion.

En el segundo caso podrias crear una matriz digamos pos[i,j] donde:

   - i: Indice de la posicion
   - j: 1 : coordenada x
         2 : coordenada y
De esta forma eliges aleatoriamente un i y cuando llegues al destino vuelves a elegir otra i.

No se si es lo que buscabas.

Un saludo

el problema de elegir un x y y al azar es que que tal si cae en un lugar inaccesible y no m refero solo a que coincida con un objto solido, si no que, talvez estando libre la posicion pero esta se encuentre rodeada de solidos y no podria pasar xD

wadk no me ha servido cuando llega a un punto se queda quieto :(