El proceso/algoritmo de "renderizado" de sprites/tiles de forma isométrica es un poco más complicado que lo explicado.
Lo explicado sirve como base de trabajo y para escenarios en donde "ningún sprite" está encima/debajo de otro (los sprites solo están delante o detrás pero al mismo nivel/altura). Para este
caso el algoritmo es claro: seguir el orden de "pintado" +(Z-X).
¿Pero que pasa cuando tengo elementos flotantes a un nivel/altura Y?
a-) Si el/los sprite/s van exactamente encima de otros sprites sin solapar/intersectar con ningún adyacente de el/ellos (en el eje Y), se puede utilizar el orden de pintado +(Z-X)-Y.
b-) Si el sprite "solapa/intersecta" a más de 1 sprite al mismo tiempo (en el eje Y) TENEMOS UN PROBLEMA: En qué orden los pintamos?. Esto ya necesita de un algoritmo de ordenación complejo
para determinar el orden. Y no digamos cuando tengamos 30 sprites flotantes que hay que "integrar".
Yo, después de un largo análisis y un mucho sufrimiento conseguí implementar un algoritmo. Nunca habría imajinado la complejidad (sinceramente pensé que era más sencillo) de este "asunto" y
que fui descubiriendo a medida que empecé el desarrollo de mi primer juego 2.5D en cocos2D-x.
Adelanto que un algoritmo de este tipo necesita, en primer instancia, de una "comparación" de "todos con todos" pero es posible hacer una serie de optimizaciones y reducir el proceso de
cálculo muchísimo.
Un ejemplo (demo) del resultado del algoritmo puede verse aquí:
https://www.youtube.com/watch?v=tU1uJYdxUY4
https://www.youtube.com/watch?v=tBwxX44c6eE
Lo explicado sirve como base de trabajo y para escenarios en donde "ningún sprite" está encima/debajo de otro (los sprites solo están delante o detrás pero al mismo nivel/altura). Para este
caso el algoritmo es claro: seguir el orden de "pintado" +(Z-X).
¿Pero que pasa cuando tengo elementos flotantes a un nivel/altura Y?
a-) Si el/los sprite/s van exactamente encima de otros sprites sin solapar/intersectar con ningún adyacente de el/ellos (en el eje Y), se puede utilizar el orden de pintado +(Z-X)-Y.
b-) Si el sprite "solapa/intersecta" a más de 1 sprite al mismo tiempo (en el eje Y) TENEMOS UN PROBLEMA: En qué orden los pintamos?. Esto ya necesita de un algoritmo de ordenación complejo
para determinar el orden. Y no digamos cuando tengamos 30 sprites flotantes que hay que "integrar".
Yo, después de un largo análisis y un mucho sufrimiento conseguí implementar un algoritmo. Nunca habría imajinado la complejidad (sinceramente pensé que era más sencillo) de este "asunto" y
que fui descubiriendo a medida que empecé el desarrollo de mi primer juego 2.5D en cocos2D-x.
Adelanto que un algoritmo de este tipo necesita, en primer instancia, de una "comparación" de "todos con todos" pero es posible hacer una serie de optimizaciones y reducir el proceso de
cálculo muchísimo.
Un ejemplo (demo) del resultado del algoritmo puede verse aquí:
https://www.youtube.com/watch?v=tU1uJYdxUY4
https://www.youtube.com/watch?v=tBwxX44c6eE