Creas un objeto que sea un pariente para todos los objetos seleccionables, y a cada hijo de ese pariente le creas una variable prioridad, que entre mayor sea más fácil de seleccionar será.
Luego usas algo como esté script, puedes cambiar el collision point por otra cosa, ej:
[gml]priority_collision(mouse_x, mouse_y, par_seleccionable);[/gml]
[gml]var ide, list=ds_queue_create(), p, ID;
do {
ide=collision_point(argument0, argument1, argument2, true, true);
with(ide){
ds_queue_enqueue(list, id);
x-=99999;
y-=99999;
if (p>prioridad) ID=id;
}
}
while( ide>=0 );
while( !ds_queue_empty(list) ) with( ds_queue_dequeue(list) {
x+=99999;
y+=99999;
}
return(ID);[/gml]
Luego usas algo como esté script, puedes cambiar el collision point por otra cosa, ej:
[gml]priority_collision(mouse_x, mouse_y, par_seleccionable);[/gml]
[gml]var ide, list=ds_queue_create(), p, ID;
do {
ide=collision_point(argument0, argument1, argument2, true, true);
with(ide){
ds_queue_enqueue(list, id);
x-=99999;
y-=99999;
if (p>prioridad) ID=id;
}
}
while( ide>=0 );
while( !ds_queue_empty(list) ) with( ds_queue_dequeue(list) {
x+=99999;
y+=99999;
}
return(ID);[/gml]