Pregunta

Para un proyecto a largo plazo de la universidad, estoy trabajando en un roguelike gráfica (soy consciente de la contradicción en los términos: P) que utiliza una pantalla isométrica. Lo que estoy tratando de averiguar es, desde el dibujo todas las fichas es era caro e innecesario, estoy queriendo averiguar un algoritmo relativamente rápido para determinar qué azulejos deben elaborarse para encajar dentro de una ventana NxMpx, dado que la teja los gráficos son XxYpx.

No estoy haciendo el desplazamiento suave para esto, así que no es un problema. Yo también estoy preocupado por ser perfecto - un poco de drenaje innecesario está bien, sólo no quiero dibujar una gran cantidad de azulejos innecesarios que no se mostrará en el juego

.
¿Fue útil?

Solución

Es necesario pensar en dos conceptos: espacio en la pantalla y el espacio mundo. Estos son muy importantes en los motores 3D, pero se aplican a todos, pero los juegos muy simples. En el motor isométrico su espacio mundo es una matriz 2D de los azulejos.

Así que busca en primer lugar en una forma para convertir entre estos dos espacios de coordenadas. Una vez que hayas hecho esto, será evidente que los mapas espaciales pantalla en el mundo como un rectange que se convirtió a los 45 grados. Se puede determinar una fórmula para eso, pero es sólo importante si usted está tratando de determinar qué parte del espacio del mundo es visible por lo que sólo simular monstruos en esa zona (una eficiencia necesaria en las consolas de 8 bits, probablemente no en un PC moderno! ). Cuando se trata de la representación real de que realmente no necesita determinar esta región visible del mundo, porque es implícito en la forma en que han prestado los azulejos en la pantalla: -

  1. Usted averiguar qué lugar del azulejo está en la parte superior izquierda de la pantalla, llame a este O (de origen) - que va a haber un desplazamiento fijo desde su punto de interés, por lo general el jugador, que desea tener en el centro de la pantalla.
  2. Una vez que tenga que pintar los azulejos en la fila superior de la pantalla, dando un paso + 1X y -1y en el espacio mundial de cada baldosa (si usted está buscando noreste).
  3. A continuación, se pinta la fila de abajo. Que se compensa menos una mitad de la anchura del azulejo en el espacio de la pantalla y comienza a O -1X en el espacio mundial.
  4. repetir los pasos 2 y 3, la modificación de su posición inicial en el espacio mundo por -1 en las direcciones X e Y de lo que utilizó en la etapa anterior 2 hasta llegar a la parte superior de la pantalla.

Otros consejos: -

  • Es obvio que no se obtenga ningún azulejos que están fuera del mapa. También puede ser que, dependiendo del diseño del juego, no sacar los azulejos fuera de una habitación en particular el jugador está en.
  • No se trata sólo baldosas del suelo para dibujar, theres también jugadores, monstruos, paisajes, etc. La regla es que dibuja todo en un lugar del mundo paricular en la misma pasada. De esta manera los objetos más cerca de la 'cámara' oscurecerá cosas detrás de ellos (por eso de empezar a dibujar en la parte superior de la pantalla).
  • También, usted no sólo tiene baldosas del suelo en la mayoría de los motores iso, también tendrían muebles y paredes segmentos. Es posible designar zonas del mapa como pertenecientes a una habitación en particular, cuando la atención se centra en esa habitación (porque el jugador está en él, por ejemplo), no dibuja los segmentos de pared por el lado de la habitación más cercana a la cámara .

De todos modos, eso es suficiente para ser seguir adelante con, espero que es útil y su proyecto va bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top