Agosto 10, 2014, 07:17:04 AM Ultima modificación: Agosto 10, 2014, 07:52:47 AM por juegovich
Hola amigos makeros! :)

estoy haciendo un juego isométrico en  :GMS:, pero por razones artísticas me gustaría cambiar el angulo de los cuadros de la retícula.
pongo unos ejemplos:


isometría común y silvestre (30 grados )


aquí en el famoso sim city 4 giraron unos grados la retícula isométrica consiguiendo unos efectos interesantes

podría hacer los esprites en función de esta retícula pero no cuadraría con la retícula real y me gustaría que los objetos se movieran tambien dentro de esta retícula pero hasta donde he visto, solo se puede hacer mas chato el rombo en el room o alargarlo mas no girarlo.

alguna solución?


Lo que quieres hacer es complejo. Siendo riguroso, lo que GM permite mostrar en el room es una malla axonométrica con simetría vertical, es decir, las aristas de los rombos pueden tener cualquier dimensión pero siempre son simétricos respecto a un eje vertical (la perspectiva isométrica es un caso especial de perspectiva axonométrica en que además los ejes forman un ángulo de 120º). Por lo tanto, lo que quieres hacer es una perspectiva axonométrica sin simetría (lo que equivale a "rotar" los rombos, como dices) y eso no lo puedes hacer directamente. Sin embargo, se me ocurre algo que puedes intentar: calcula las dimensiones que necesitarían los rombos en GM de modo que si los rotaras coincidan con los rombos no isométricos que quieres usar; utiliza esa malla en el room y coloca tus instancias (se verán desalineados en un principio). Tienes que definir en el room un punto que haga de origen, en torno al cual todos los rombos de GM rotados calcen con tus rombos no isométricos. En el evento create de los objetos, calcula sus coordenadas x,y modificadas aplicando una transformación en función del ángulo de rotación y las coordenadas originales y en el juego aparecerán las instancias en sus ubicaciones correctas.


Cita de: Guacusio en Agosto 10, 2014, 09:57:21 PM
Lo que quieres hacer es complejo. Siendo riguroso, lo que GM permite mostrar en el room es una malla axonométrica con simetría vertical, es decir, las aristas de los rombos pueden tener cualquier dimensión pero siempre son simétricos respecto a un eje vertical (la perspectiva isométrica es un caso especial de perspectiva axonométrica en que además los ejes forman un ángulo de 120º). Por lo tanto, lo que quieres hacer es una perspectiva axonométrica sin simetría (lo que equivale a "rotar" los rombos, como dices) y eso no lo puedes hacer directamente. Sin embargo, se me ocurre algo que puedes intentar: calcula las dimensiones que necesitarían los rombos en GM de modo que si los rotaras coincidan con los rombos no isométricos que quieres usar; utiliza esa malla en el room y coloca tus instancias (se verán desalineados en un principio). Tienes que definir en el room un punto que haga de origen, en torno al cual todos los rombos de GM rotados calcen con tus rombos no isométricos. En el evento create de los objetos, calcula sus coordenadas x,y modificadas aplicando una transformación en función del ángulo de rotación y las coordenadas originales y en el juego aparecerán las instancias en sus ubicaciones correctas.

Muchas gracias! nunca se me hubiera ocurrido jaja, si no hay de otra ni modo, no se si sea posible, pero si generara un fondo en 3d con su reticula en el grado que necesito y sobre eso coloco los objetos 2d se resolveria el problema? es una alternativa que se me ocurre, ni idea si es mas facil o complicada.

Tendrías que probar. Lo que te sugerí requiere de cálculos trigonométricos de cierta complejidad para proyectar las coordenadas rotadas, pero si puedes crear un fondo con el ángulo que deseas, mejor... aunque ¿cómo lo harías para que una instancia 2D desaparezca al moverse tras un edificio del fondo, por ejemplo?


en Game Maker studio cuando lo incias en el apartado "tutoriales" o "demos" esta lo que estas buscando