Post Antiguos => General (Antiguo) => Mensaje iniciado por: ACarranza en Enero 29, 2016, 02:06:18 AM
Título: Duda sobre Order in layer en los sprites
Publicado por: ACarranza en Enero 29, 2016, 02:06:18 AM
Que tal amigos:tengo una duda existencial con los sprites, tome estos prestados nomas para ilustrar mi duda, cuando tenemos n cantidad de enemigos en escena, y estos se lleguen amontonar, como en la imagen, cosas como estas llegaran a pasar. que los que tenga el valor mas alto en el order in layer, se sobrepongan con los mas bajos, provocando esto:Entonces en mi conocimiento y entender lo que estoy haciendo es tener una lista de mis sprites visibles en escena, y estoy comparando posiciones en cada update, mediante el metodo de la burbuja para ordenarlos de menor a mayor, por lo pronto no me causa problema alguno hacer esto con algunos sprites, pero..mi duda es ya de performance, que tan eficiente sera esto ya en un futuro cuando quiera tener unos 50 sprites a la vez, conocen otra tecnica? saludos. (//<fileStore.core_Attachment>/monthly_2016_01/Screen_Shot_2016-01-28_at_4.59.24_PM.png.dd6b06429aa5fd5d06e81962f48784f2.png)
Título: Duda sobre Order in layer en los sprites
Publicado por: xChulvi en Febrero 02, 2016, 02:48:17 AM
Hola @ACarranza. Una vez me encontré con este tipo de problema. Si tienes varios personajes como esos monstruos de forma que todos estén en la misma posición Y (a la misma altura en la pantalla), el efecto no queda mal al tenerlos juntos ya que todas la piernas y cabezas están a la misma altura. El problema viene cuando los monstruos pueden moverse libremente tanto en X como en Y, que los pies de uno aparecen por delante de la cabeza del que está un poco mas abajo, ya que el OrderInLayer lo superpone todo por capas. No se exactamente que solución has tomado , pero ejecutar el método de ordenación "burbuja" en cada update si que puede ser bastante costoso si la cifra de monstruos aumenta lo suficiente, el rendimiento se vería afectado al final. Si te sirve de algo, yo hice lo siguiente para arreglar eso: - Poner todos los "monstruos en el mismo OrderInLayer", todos en la misma capa. - Coger el script del "monstruo" y en su Update decirle que la posición Z sea igual a la Y: transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.y);De esta forma, al ser 2D, y poner que la Z sea igual a la Y, lo que ocurre es que siempre el que esté con la posición en Y más bajita se va a ver por delante de los que están por arriba. Por ejemplo en la imagen que adjuntas, podríamos decir que el monstruo de arriba esta en Y = 3, el del medio en Y = 2, el de abajo en Y = 1, por lo tanto los 3 se verían correctamente, ya que el del medio tendría Z = 2, y el de arriba Z = 3 viéndose por detrás del anterior. Como constantemente se está calculando la posición, nunca ocurrirá ese molesto solapamiento, ya que si el de arriba se mueve a una posición Y por debajo de los otros 2, su Z también cambiará superponiéndose a los demás. No se si es exactamente el problema que tienes o si me he explicado bien pero ahí lo dejo. Saludos!!
Título: Duda sobre Order in layer en los sprites
Publicado por: ACarranza en Febrero 02, 2016, 06:23:57 AM
[quote author=xChulvi" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35032" data-ipsquote-contentcommentid="126707">Hola @ACarranza. Una vez me encontré con este tipo de problema. Si tienes varios personajes como esos monstruos de forma que todos estén en la misma posición Y (a la misma altura en la pantalla), el efecto no queda mal al tenerlos juntos ya que todas la piernas y cabezas están a la misma altura. El problema viene cuando los monstruos pueden moverse libremente tanto en X como en Y, que los pies de uno aparecen por delante de la cabeza del que está un poco mas abajo, ya que el OrderInLayer lo superpone todo por capas. No se exactamente que solución has tomado , pero ejecutar el método de ordenación "burbuja" en cada update si que puede ser bastante costoso si la cifra de monstruos aumenta lo suficiente, el rendimiento se vería afectado al final. Si te sirve de algo, yo hice lo siguiente para arreglar eso: - Poner todos los "monstruos en el mismo OrderInLayer", todos en la misma capa. - Coger el script del "monstruo" y en su Update decirle que la posición Z sea igual a la Y: transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.y);De esta forma, al ser 2D, y poner que la Z sea igual a la Y, lo que ocurre es que siempre el que esté con la posición en Y más bajita se va a ver por delante de los que están por arriba. Por ejemplo en la imagen que adjuntas, podríamos decir que el monstruo de arriba esta en Y = 3, el del medio en Y = 2, el de abajo en Y = 1, por lo tanto los 3 se verían correctamente, ya que el del medio tendría Z = 2, y el de arriba Z = 3 viéndose por detrás del anterior. Como constantemente se está calculando la posición, nunca ocurrirá ese molesto solapamiento, ya que si el de arriba se mueve a una posición Y por debajo de los otros 2, su Z también cambiará superponiéndose a los demás. No se si es exactamente el problema que tienes o si me he explicado bien pero ahí lo dejo. Saludos!! [/quote]Que tal amigo, muchas gracias por responder, efectivamente como dices, se resolvio aplicando el cambio de posicion en z usando Y , de hecho meditanto hace dias sobre el problema, me acorde en uno de los apps que programe, ya habia resuelto ese problema, pero para otro tipo de dinamica,
&t=9" rel="external nofollow date=1454377697]https://youtu.be/Sx3E03rYoxA?list=PLGx_XWl9ew8ekBSsca3hpGucEZLPVmZ5k&t=9por ejemplo, lo use para posicionar objetos interactivos en diferentes capas y posicion en z para respetar la profundidad , lo mismo para los stickers mientras mas arriba, mas "al fondo" los mandaba, pero en los stickers modificaba el order en layer dependiendo el Y . Gracias a tu comentario me ayudo a rectificar que lo que estoy haciendo es bueno jeje saludos.