Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: p34 en Marzo 28, 2011, 05:53:51 AM

Título: que puedo hacer cuando exceden el view?(Resuelto)
Publicado por: p34 en Marzo 28, 2011, 05:53:51 AM
Hola, tengo un problema ya que estoy usando un ciclo FOR para dibujar un sprite por cada nivel de mi juego pero los sprites al llegar al nivel 12 exceden la view y me gustaria saber como le puedo hacer para que al pasar esto dibuje los sprites a la derecha de los otros, volviendo a empezar desde arriba.
Aqui les dejo como lo estoy haciendo:
[gml]var i;
for (i=0; i<obj_nivel.nivel_desbl; i+=1)
{
 if i = opcion-1
   {
    draw_sprite(spr_nivel,-1,view_xview+50,view_yview+25+30*i);
   }    
   else
   {
    draw_sprite(spr_nivel2,-1,view_xview+50,view_yview+25+30*i);
   }
}[/gml]
Título: Re: que puedo hacer cuando exceden el view?
Publicado por: VideoGamer en Marzo 29, 2011, 09:04:06 PM
se me ocurre que crees un objeto que sea la barra de la derecha y en el room le pones que la siga, entonces al bajar com las flechas o como le hagas que tambien baje y puedas ver los otros botones :D
Título: Re: que puedo hacer cuando exceden el view?
Publicado por: licshendu en Marzo 31, 2011, 07:06:16 PM
Hola debes usar dos for pero antes que eso, debes  calcular el n?mero de veces m?ximo que cabe el sprite en la altura de la view:
Primero necesitamos una variable que contenga el numero de niveles desbloqueados ejemplo n=12

Despu?s tenemos que calcular cuantas veces cabe el sprite en la altura de la view, por ejemplo:
ny=view_hview[0] div sprite_get_height(sprite0)

Luego tenemos que dividir el numero de niveles desbloqueados entre el numero de veces que cabe el sprite en la altura de la view
nx=n div ny

Despu?s como el numero de niveles desbloqueados no siempre ser? m?ltiplo exacto del numero de veces que cabe el sprite en el alto de la view. Calculamos el residuo
nr= n mod ny

Ahora utilizando dos for en draw ya se dibujaran a la derecha si exceden la view
for(i=0;i<=nx;i+=1)
{
   if i=nx and nr!=0 nny=nr else nny=ny// en todas las columnas a excepci?n de la ultima se dibujara el numero m?ximo de veces que quepa el sprite en la altura de la view
   for(j=0;j<nny;j+=1)
       draw_sprite(sprite0,-1,view_xview[0]+i*sprite_get_width(sprite0),view_yview[0]+j*sprite_get_height(sprite0))
}


saludos  ;) anexo el ejemplo
Título: Re: que puedo hacer cuando exceden el view?
Publicado por: p34 en Abril 03, 2011, 12:05:10 AM
gracias por la ayuda. ya dibuja todos los sprites que ocupo pero todavia no puedo hacer que se pueda escoger uno para ir a un nivel. te dejo el ejemplo
Título: Re: que puedo hacer cuando exceden el view?
Publicado por: licshendu en Abril 03, 2011, 01:14:57 AM
solo hab?a que modificar una l?nea y bueno agregue lo de llevarte a los niveles saludos p34  :D
Título: Re: que puedo hacer cuando exceden el view?
Publicado por: p34 en Abril 03, 2011, 04:19:29 AM
Cita de: licshendu en Abril 03, 2011, 01:14:57 AM
solo hab?a que modificar una l?nea y bueno agregue lo de llevarte a los niveles saludos p34  :D

Gracias de verdad, no tenia la mas minima idea de como lograrlo y tu me lo resolviste  :D