Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: KILILIMAN en Septiembre 06, 2011, 10:56:34 PM

Título: Mover objeto de enfrente
Publicado por: KILILIMAN en Septiembre 06, 2011, 10:56:34 PM
Hola a todos: Tengo el siguiente problema podran verlo de una mejor manera si descargan el archivo adjunto, el problema es el siguiente:
Tengo dos objetos uno encima de otro he scripteado para que al dar click cada uno de esos objetos se mueva junto con el raton, pero al dar click en el objeto de arriba el que se mueve es el de abajo, aunque por logica deberia ser al reves, mi pregunta es que si alguien sabe de que manera mover el objeto que este al frente del juego, como les digo es un poco complicado de explicar lo entenderian mejor si ven el demo...
Saludosssssssssssssssssssssssssssssssssss
Título: Re: Mover objeto de enfrente
Publicado por: MaanuRP en Septiembre 06, 2011, 11:26:17 PM
Es problema con el depth, la profundidad.

Fijate que si le pones una depth menor al cuadrado, siempre va a quedar por encima del triangulo y siempre se va a mover ese cuando este por encima, y viseversa.

Ponle mayor depth al que quieres que quede por detras.
Título: Re: Mover objeto de enfrente
Publicado por: KILILIMAN en Septiembre 07, 2011, 02:30:10 AM
Si amigo pero eso lo unico que hace es pasar hacia atras o adelante el objeto pero sigue teniendo el mismo efecto, por ejemplo si hay dos objetos sobrepuestos al dar click sobre el que esta arriba el efecto es para los dos, obvio que tienen activado el evento de click, alguien sabe como hacer para que el objeto que esta atras no reciba evento de click si tiene otro enfrente....
Título: Re: Mover objeto de enfrente
Publicado por: sulcan en Septiembre 07, 2011, 08:30:28 AM
la profundidad no tiene nada que ver aun si la cambias es igual, gamemaker eval?a las instancias en orden en que fueron creadas (a cada una se le asigna  una id mayor a la anterior) entonces como el cuadrado lo creaste primero ese eval?a primero y le gana la bandera al triangulo, as? que siempre tomaras al objeto que creaste primero. tiene soluci?n?? claro que si, pero depende de como tengas tu juego podr?a ser la mas optima, por ejemplo lo mas simple es invertir la profundidad de esta forma cuando crees una nueva instancia se crea atr?s de las que ya est?n para que la instancia mas antigua quede al frente y esa escoja GM lo puedes hacer en el evento create delos objectos asi: depth=id
asi cada instacia tiene una profundidad de acuerdo a la id, pero creo que solo funcionaria si todas las instancias pertenecen a un mismo objeto porque si son distintos objetos interpolados creo que abr?a "preferencias" si es tu caso entonses crea una variable global con una id alterna por ejemplo global.idd y en el evento create de todas las instancias pones
depth=global.idd;
global.idd+=1;


y listo todas las instancias tienen una id alterna en orden,
( bajo este mismo principio el objeto de control que tiene las variables globales debe estar agregado en el room primero que las dem?s instancias o marcar? error)

dejo ejemplo al final


pero si bien esto afecta tu juego o simplemente no luce bien, existe otra opci?n pero esta implica una peque?a base de datos y en este momento no me alcanza el tiempo si el es caso h?zmelo saber y te ayudo con eso (no es nada complicado en realidad solo que me hizo falta tiempo), ojo incluso se puede hacer de una manera mas sencilla si solo fuera un objeto o por lo menos un numero peque?o de ellos, debe haber mas opciones pero tengo sue?o, si tienes dudas preg?ntame. 


espero haberte ayudado suerte...
Título: Re: Mover objeto de enfrente
Publicado por: MaanuRP en Septiembre 07, 2011, 01:30:47 PM
Gracias por la correccion, sulcan.
Título: Re: Mover objeto de enfrente
Publicado por: KILILIMAN en Septiembre 07, 2011, 08:16:30 PM
Wowwwwwww Sulcan te AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO!!!!!!!!!!!!
Gracias me acabas de regresar mis horas de sue?o, acabo de solucionar mi problema gracias a tu explicacion, casi siempre creo mis personajes mediante codigo, empiezo con un room en blanco y creo todo mediante scripts asi que no fue dificil aplicar tu explicacion, solo le voy dando mayor depht a los objetos creados posteriormente y con eso se soluciono todo, muchas gracias de nuevo sulcan. Mi juego se trata de una lluvia de frutas, asi que era medio raro tomar un coco y que saliera de atras una sandia, pero ahora todo bien...
Saludossssssssssssssssssssssssssssssssss
Título: Re: Mover objeto de enfrente
Publicado por: sulcan en Septiembre 08, 2011, 07:49:28 PM
Que bueno saber que te ha servido, pero encontr? una forma mas sencilla y eficiente de lograr esto, solo necesita una variable y ya no modificaras la depth para que tenga sentido ahora seleccionas el ultimo en crearse (el de arriba ) y no el primero lo que tiene sentido.

como funciona??..
lo que hace es que como gm al darle clic a la figura eval?a el que se cre? primero este le pasa la id a la ?nica variable que se crea, despu?s eval?a el siguiente entonces este tambi?n le pasa su id a la misma variable borrando la anterior id y as? hasta llegar a la ultima figura que se le dio clic al mismo tiempo que las dem?s y como es el ultimo en pasarle la id a la variable entonces esa se queda grabada y esa es la que mueve, la ultima en quedarse la que est? hasta arriba xD

en definitiva lo considero mejor c?digo, mas simple menos recursos...
si tienes dudas me avisas
 suerte
Título: Re: Mover objeto de enfrente
Publicado por: KILILIMAN en Septiembre 08, 2011, 09:01:23 PM
Cita de: sulcan en Septiembre 08, 2011, 07:49:28 PM
Que bueno saber que te ha servido, pero encontr? una forma mas sencilla y eficiente de lograr esto, solo necesita una variable y ya no modificaras la depth para que tenga sentido ahora seleccionas el ultimo en crearse (el de arriba ) y no el primero lo que tiene sentido.

como funciona??..
lo que hace es que como gm al darle clic a la figura eval?a el que se cre? primero este le pasa la id a la ?nica variable que se crea, despu?s eval?a el siguiente entonces este tambi?n le pasa su id a la misma variable borrando la anterior id y as? hasta llegar a la ultima figura que se le dio clic al mismo tiempo que las dem?s y como es el ultimo en pasarle la id a la variable entonces esa se queda grabada y esa es la que mueve, la ultima en quedarse la que est? hasta arriba xD

en definitiva lo considero mejor c?digo, mas simple menos recursos...
si tienes dudas me avisas
 suerte
Buen idea pero si agregas cuadros encima de los triangulos, se seguira teniendo el mismo efecto de que se mueve el objeto que esta atras, jejejjeje
creo que no es la solucion 100 % efectiva.....
Saludossssssssssssssssssssssss
Título: Re: Mover objeto de enfrente
Publicado por: sulcan en Septiembre 09, 2011, 07:43:42 AM
CitarBuen idea pero si agregas cuadros encima de los triangulos, se seguira teniendo el mismo efecto de que se mueve el objeto que esta atras, jejejjeje
creo que no es la solucion 100 % efectiva.....
Saludossssssssssssssssssssssss

ajhaja disculpa tienes raz?n olvide ese detalle que mencione antes GM eval?a las instancias en orden que se crearon, pero tambi?n lo hace en orden de objectos es decir las instancias de un objeto despu?s las instancias de otro, por eso ocurre esto no toma parejo las instancias si no por objeto, soluci?n: funciona solo si usas solo un objeto y todas las instancias pertenezcan a este objeto, muy limitarte no?, se puede lograr esto mismo de otra forma pero parece que te sirve as? como ya est? si necesites algo solo dimelo suerte....