Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: mamaffia en Septiembre 20, 2014, 01:53:51 AM

Título: Dibujar cosas debajo de los objetos y no por encima
Publicado por: mamaffia en Septiembre 20, 2014, 01:53:51 AM
Buenas, quería saber si hay alguna forma de usar DRAW para dibujar cosas pero por debajo de los objetos, o sea, que no quede siempre al frente de todo, como para decirlo de alguna manera poder manejar el depth entre objetos que hay en la room y lo que se dibuja con draw.
Título: Re:Dibujar cosas debajo de los objetos y no por encima
Publicado por: penumbra en Septiembre 20, 2014, 02:07:01 AM
depth sirve para eso, no sé qué es lo que quieras hacer, pero si quieres que el jugador quede tapado por un árbol, al árbol le das una profundidad menor a la del jugador o al jugador una profundidad mayor que la del árbol. También se puede usar un objeto controlador que dibuje en el orden deseado las cosas deseadas. Por ejemplo, desde el objeto controlador
[gml]
with(obj_player)
    draw_self()

with (obj_arbol)
     draw_self()[/gml]

Para que funcione correctamente hay que evitar que tanto el árbol como el jugador dibujen automáticamente su sprite, lo que se hace por ejemplo, poniendo un evento DRAW en esos objetos y dejando el evento vacío.
Título: Re:Dibujar cosas debajo de los objetos y no por encima
Publicado por: mamaffia en Septiembre 20, 2014, 02:13:12 AM
Antes que nada gracias por la respuesta, por ahí me expresé mal, lo que yo quiero saber es si por ejemplo, supongamos que quiero un círculo en el fondo de la room, en vez de hacer un background con ese círculo dibujado o poner un objeto, podría hacerlo con draw_circle sin que este me tape al jugador? es eso lo que me pasa, dibujo cosas pero tapan a las cosas mas importantes del juego, como el jugador, enemigos, etc.
Título: Re:Dibujar cosas debajo de los objetos y no por encima
Publicado por: eams1986 en Septiembre 20, 2014, 02:23:52 AM
Haaaa entoncea a ese obj dale un depth= 500 que lo mandara al fondo -500 arriba y 0 en el centro por decir asi
Saludos .
Título: Re:Dibujar cosas debajo de los objetos y no por encima
Publicado por: penumbra en Septiembre 20, 2014, 02:26:23 AM
Una manera es que un objeto controlador dibuje al jugador y al círculo (y que el jugador no se dibuje a sí mismo, como mencioné en el mensaje anterior). Pimero dibujaría el círculo y luego al jugador, lo que haría que el jugador siempre quedara encima..

Otra manera que yo nunca he probado, pero que creo que funcionaría es usar el evento Draw Begin para cosas que quieras que se dibujen debajo y DRAW END para cosas que se dibujen encima. Por ejemplo, el blog de YoYo meciona  que es posible usar DRAW BEGIN para dibujar las sombras de los objetos, DRAW normal para dibujar objetos y DRAW END para dibujar efectos especiales.
Título: Re:Dibujar cosas debajo de los objetos y no por encima
Publicado por: kostra en Septiembre 20, 2014, 10:45:51 AM
recuerda que todo codigo tiene un orden de lectura, hay veces en que cosas así se resuelven simplemente con la posición en la lista de los objetos, o en el orden en el que pones el código, me parece que lo último que dibuja va delante de lo primero.

Por ejemplo, si haces un ciculo azul y luego escribes uno amarillo en el mismo lado, se verá el amarillo delante, y si lo pones al revés, pues se verá el azul :P

Espero que te ayude eso, lo mismo pasa con los objetos, si los pones más arriba o más abajo de la lista, yo una vez resolví un problema parecido así.

PD: y con el draw no sirve el depth? he de mirarlo =_=
PD2: personalmente, yo he probado GMS y he tenido muchísimos problemas parecidos, sinceramente, no me gusta nada esa versión, me quedo con GM8.0 4life :D
Título: Re:Dibujar cosas debajo de los objetos y no por encima
Publicado por: TheSandBoxMKG en Septiembre 20, 2014, 03:10:00 PM
Si queres el circulo en el fondo-fondo,entonces conviene que el jugador se dibuje a si mismo con su depth y el circulo, lo dibuje otro objeto con otro depth mas profundo.