Julio 02, 2013, 05:17:44 AM Ultima modificación: Julio 04, 2013, 12:03:09 AM por GALO
Hola a todos.

El asunto es que después de crear un código para una torreta automática, en el cual está elige su objetivo por proximidad, surgió el problema de que si el enemigo mas cercano esta detrás de un muro, solo se fija en esté y no en el otro enemigo que esta descubierto (no lo toma como amenaza ya que esta mas lejos que el primero. ).

Quería saber si alguien conoce una forma de hacer que la torreta tome en cuenta los enemigos expuestos, aun que esten mas lejos y no los que estan a cubierto o detrás de un muro (el código que empleo se basa en collision_line y instance_nearest).

muchas gracias por su tiempo  :)
"Aquel que conoce el porque, es el que en verdad sabe.-"

Pues en este caso instance_nearest() no te será de mucha utilidad... necesitas checar todos los objetos enemigos y ver cuál es el más apto.
Fenris78 hizo algo parecido, sólo que él en lugar de checar el más cercano posible, checó el más cercano dentro de un rango de visión; es sólo cuestión de que modifiques eso último (la condición dentro de los bucles for).

http://www.comunidadgm.org/index.php?topic=9090.0

#2 Julio 03, 2013, 08:08:32 AM Ultima modificación: Julio 03, 2013, 08:11:00 AM por brunoxzx
Te hice una pequeña modificacion de este script  que se adapta a lo que quieres.
[gml]
var pointx,pointy,object,n,list,nearest;
    pointx = argument0;
    pointy = argument1;
    object = argument2;
    list = ds_priority_create();
    nearest = noone;
    with (object) ds_priority_add(list,id,distance_to_point(pointx,pointy));
    do {
           nearest = ds_priority_delete_min(list);
    }while(collision_line(pointx, pointy, nearest.x, nearest.y, PARIENTE_MURO, false, true) && !ds_priority_empty(list));
    ds_priority_destroy(list);
    return nearest;
[/gml]

Lo usas así instance_nearest_line(x,y,obj);

Vaya, no había visto este script de Fenris78  :-[ , gracias knd144.

Brunoxzx , tenia problemas para adaptarlo muchas gracias a ti también, han resuelto mi duda  ;)
"Aquel que conoce el porque, es el que en verdad sabe.-"