Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Dudas con scroll de mapa 2D

Iniciado por SiPoX, 21 de Febrero de 2007, 11:48:48 PM

« anterior - próximo »

SiPoX

LLevo unos días probando cosillas para realizar un scroll suave en un mapa 2D... más o menos ya he conseguido que funcione de forma correcta, pero tengo algunas dudas sobre filosofías a seguir...

Bien... la idea es que el scroll sea horizontal y vaya acorde con el movimiento del personaje, es decir, que si el personaje se mueve hacia la derecha, el mapa se desplace hacia la derecha. Por ello, en una de esas pruebas, lo que hago es que cuando se mueve el personaje, muevo también el mapa.

Por otro lado, en un libro sobre algoritmos típicos en el desarrollo de juegos, se usa otro modo: teniendo la x y la y del personaje, se calcula su posición en la matriz de mappeado, bidimiensional y se actua en consecuencia, acotando la parte del mapa que debe ser mostrada. Puesto que con este método necesito una matrix de dos dimensiones y con el mapa hecho con el mappy la tengo en un vector, "convierto" el vector a la matriz. Eso lo hace bien, pero no consigo que dibuje bien el mapa, debido a que no acabo de entender los pasos a seguir en este modo de hacerlo.

Por otro lado, también me gustaría tener de fondo una capa más.... actualmente lo he implementado como si fuera un sprite más, pero la correspondencia entre lo que avanza el personaje y el movimiento de esta capa la tengo hecha de forma muy... rudimentaria, por así decirlo...

¿Cual sería la forma más correcta de implementar todo esto? De la segunda forma? Algún libro, tuto o artículo donde se trate este tema?

Gracias! ;)
gamevelop: punto de encuentro para la industria del videojuego

Eduardo Millán: mi perfil ;)

senior wapo

Considera la capa donde está el mapa principal z=1.

Los mapas que pintas por detrás, les pones z>1.

Los mapas que pintas por delante, tapando la visión del personaje llevan z entre 0.0 y 1.0

Las coordenadas de mapa a pintar en cada capa las divides por su Z.

En el fondo principal, divides por 1, y se queda igual.
En una capa por detrás con z=2.0, pues avanzas medio pixel (posicion/2.0) en ese mapa por cada pixel de avance normal del personaje.
En una capa situada por delante del plano principal , pongamos z=0.5, pues un avance de 1 pixel del personaje hace que dicha capa avance 2 pixeles.


Simplemente ten varios mapas que dibujas en orden de mas lejos a mas cerca. Cada coordenada y tamaño que uses lo divides por la profundidad de la capa en cuestión.

pylorca


SiPoX

Reabro el post con otra duda relacionada.... ;) :)

El mapa y sus capas se muestran correctamente, las respuestas me sirvieron de ayuda, gracias!

Ahora la duda viene de cómo guardar / gestionar los elementos móviles. Es decir, por ejemplo un enemigo o una losa que va y viene. De momento, lo que he hecho es crear una clase, que almacene su posición x,y respecto a los indices x,y de la matriz en la que tengo el mapa. Después para saber si lo tengo que dibujar o no, pues compruebo si en el fragmento que se dibuja de la matriz hay o no elementos móviles.

Irían por ahí los tiros? cuál sería la forma "propicia", por así decirlo, de implementarlo? Uno de los problemas que tengo es que el sprite en cuestión siempre sale a la misma distancia del margen... puesto que realmente lo dibujo siempre en la misma X... pero si el mapa se mueve, este sprite también debería moverse en el sentido que saliera progresivamente de la vista. Hum... no sé si me explico....

Como una imagen vale más que mil palabras...



El ladrillo que está arriba del todo, es el sprite. Se ve entero, cuando se tendría que ver la mitad, como en el ladrillo del suelo, que está debajo de él. Es decir, tendría que sincronizar esos elementos móviles con el movimiento del mapa. Con el planteamiento actual no se me ocurre la forma de hacer tal sincronización, de ahí la pregunta de si voy por buen camino....

Como siempre, gracias y saludetes ;) :)
gamevelop: punto de encuentro para la industria del videojuego

Eduardo Millán: mi perfil ;)

marcode

Yo lo que creo es que no debería de moverse el mapa, sino una supuesta cámara. En este caso con tener un par de desplazamientos X Y sería suficiente.

Después para dibujar restas ese desplazamiento a todos los objetos incluido el fondo.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

SiPoX

Cita de: "marcode"Yo lo que creo es que no debería de moverse el mapa, sino una supuesta cámara. En este caso con tener un par de desplazamientos X Y sería suficiente.

Después para dibujar restas ese desplazamiento a todos los objetos incluido el fondo.

Respecto del planteamiento original de mover mapa, lo cambié a que se moviera como esa cámara, es decir, que realmente se moviera la cámara y según dónde estuviera ésta, mostrara una parte u otra del mapa. Pero hasta no leer el comentario y fijarme de nuevo... no se me ocurrió hacer también la resta del desplazamiento a los sprites.... ;) :) Ya rula!!!
gamevelop: punto de encuentro para la industria del videojuego

Eduardo Millán: mi perfil ;)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.