Digamos que tengo una sartén, y encima de ella, se frien muchas cosas, huevos, carne, etc....

Imaginaos quiero seleccionar un trozo de carne, pero además, bajo ella hay un huevo, y bajo éste, la sarten. Y que todos estos objetos son seleccionables por el mouse.

¿Cómo podría poner una especie de preferencia de selección?

Deduzco que esto no iba aquí, ¿podrías borrarlo por favor? Así los demás miembros verán que no ha sido respondida .

Gracias.


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]

Gracias, el problema es que los parent no los puedo tocar ya, que solo haya una posibilidad de parent toca un poco la moral. No obstante me apunto este código por si me sirve para otra cosa.

Cita de: francordoba en Septiembre 03, 2013, 02:11:46 AM
Gracias, el problema es que los parent no los puedo tocar ya, que solo haya una posibilidad de parent toca un poco la moral. No obstante me apunto este código por si me sirve para otra cosa.
Mmm eso suena más coomo a un error de diseño. En fin, para hacer que funcione solamente repite el primer do-while para cada uno de los objetos en los que quieres que funcione. Si algo anda mal avisas.