Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Black_Cat en Noviembre 01, 2014, 09:53:53 PM

Título: Minimapa relativo al personaje
Publicado por: Black_Cat en Noviembre 01, 2014, 09:53:53 PM
Hola a todos quería saber cómo realizar un mini mapa que se muestre, por ejemplo, en alguna esquina de la pantalla pero que éste mini mapa sea relativo al personaje. Es decir que solo muestre la zona al rededor del personaje. La vista estaría centrada en el jugador y en el mini mapa deberían a aparecer el personaje en el centro los objetos que estén mas cerca al personaje.

Alguna idea de cómo implementarlo?
Título: Re:Minimapa relativo al personaje
Publicado por: kostra en Noviembre 01, 2014, 10:08:20 PM
y si creas una view, que pille el trozo que deseas que se vea, pero en pantalla lo pones en pequeñajo y en la posición que deseas, dandole que siga también al player?

claro, sería un minimapa de las mismas instancias en pequeñito en vez de uno con iconos propios, claro, pero sería super cuci y grachiochi xdddd
Título: Re:Minimapa relativo al personaje
Publicado por: Black_Cat en Noviembre 01, 2014, 10:13:30 PM
Claro, eso es precisamente lo que no necesitaría. Porque se vería mal al estar la imagen redimensionada.
Más bien busco representar en el minimapa objetos precisos y no todo el nivel en si.
Título: Re:Minimapa relativo al personaje
Publicado por: penumbra en Noviembre 01, 2014, 10:50:02 PM
Bueno, yo nunca he hecho un minimapa, pero se me ocurren varias ideas.

Una idea es usar una segunda vista, como dijo kostra.

otra es tomar una captura, guardarla en una surface, recortar la surface para que sólo quede la zona cercana al jugador y dibujarla en donde quieras que esté el minimapa.

Obviamente estos métodos tendrían el inconveniente de que al reducir la imagen habría distorsión, además habría que modificar el juego para que al tomar la captura, el jugador no se dibujara y después de tomar la captura, volver a habilitar el dibujo del sprite del jugador, de lo contrario, el propio sprite del jugador saldría en el minimapa, y creo que no se vería bien.

Otra idea sería que todos los objetos o instancias que potencialmente pudieran aparecer en el mapa tuvieran una variable "display_on_map" que inicialmente fuera 0 y se hiciera 1 si están a una distancia más o menos cerca del jugador (indicando que está en el rango del minimapa) y volviera a 0 si el jugador se aleja de ellas. Luego, todo sería usar cálculos simples para que el mapa fuera un rectángulo o círculo, en su centro siempre estaría dibujado el jugador (un punto, una figura geométrica, no sé)

Si un objeto tiene su variable "display_on_map" en 1, se revisa a qué distancia está del jugador, y para colocarlo en el mapa, esa distancia se divide en 2, 3, o cualquier número dependiendo de las dimensiones del mapa, así se mantendría una proporción entre las distancias objeto-jugador del juego y las distancias objeto-jugadoren el mapa
Título: Re:Minimapa relativo al personaje
Publicado por: Killer en Noviembre 02, 2014, 02:10:21 AM
Activa una view que no estés usando, colócala en la posición de la ventana que quieras usar con el alto y ancho que quieras usar, los valores Top y Left deben ser 0.

Ahora crea un nuevo objeto, o modifica un objeto controlador que ya estés usando. Dale una profundidad por encima de todos los demás objetos, y en su evento Draw pon este código, modificándolo para usar la view que apartaste para el minimapa:

if (view_current == 1){
  var scale;
  scale = view_width[1] / view_width[0];
  draw_rectangle(0,0,view_width[1],view_height[1]);
  with(all){
    if variable_local_exists("Map_Icon")
      draw_sprite(Map_Icon,-1,x*scale,y*scale);
  }
}


Ese código dibujará solamente en la view seleccionada, dibujando un rectángulo para cubrir el fondo de la view y luego dibujará sprites representativos de las instancias en una posición relativa a su posición en la room.

Solo instancias que tengan la variable Map_Icon serán dibujadas en el minimapa, y dicha variable debe contener el sprite que será dibujado en el minimapa.

Dejo un ejemplo:
Título: Re:Minimapa relativo al personaje
Publicado por: Black_Cat en Noviembre 02, 2014, 04:50:39 AM
Gracias por las respuestas. Justo estaba pensando como implementar el último punto de Penumbra cuando lo leí a la tarde. Hasta que vi tu mensaje Killer. Que buen ejemplo me dejaste! :D

Eso es lo que estaba buscando exactamente.
Ahora solo quedaría colocarlo en la pantalla y hacerle una que otra modificación. Eso ya me guio como hacerlo.
Muchas gracias! me sirvió un montón :)