Buenas tardes comunidad!!
Lo que pasa es que mi juego se ajusta bien en los dispositivos gracias a ocarina, que me dio un codigo llamado"//funciones para cambiar la resolución", pero me di cuenta que la GUI no se ajusta y se pierde(botones,puntos y vidda). esto pasa cuando la pruebo en otro dispositivo diferente al mio(android).
Tengo mi codigo asi;
Event create;;
global.izq = virtual_key_add (50,700,128,128, ord('A'));
//virtual_key_show (global.izq);
global.der = virtual_key_add (350,700,128,128, ord('D'));
//virtual_key_show (global.der);
global.arri = virtual_key_add (200,550,128,128, ord('W'));
//virtual_key_show (global.arri);
global.abaj = virtual_key_add (200,850,128,128, ord('S'));
//virtual_key_show (global.abaj);
global.sal = virtual_key_add (1550,700,128,128, ord('F'));
//virtual_key_show (global.sal);
global.corr = virtual_key_add (1400,850,128,128, ord('E'));
//virtual_key_show (global.corr);
global.menu = virtual_key_add (1550,50,128,128, ord('Q'));
//virtual_key_show (global.menu);
Event Draw GUI;;
draw_sprite (spr_izq,0,50,700);
draw_sprite (spr_der,0,350,700);
draw_sprite (spr_arri,0,200,550);
draw_sprite (spr_abaj,0,200,850);
draw_sprite (spr_salto,0,1550,700);
draw_sprite (spr_salto,0,1400,850);
draw_sprite (spr_menu,0,1550,50);
Que podria hacer para que esta configuracion de botones se adapte a cualquier dispositivo y pantalla android??
Gracias por su ayuda!!!
amigo ahora al ver tu codigo ya entiendo que era lo que me decias de que los botones desaparecen!!! por eso te decia pon tu codigo!!!
lo que pasa es que con el metodo de keep aspect ratio o el mismo codigo que te pase los sprites se ajustan bien pero las cordenadas no!!!
me explico
si pones una virtual key en la posicio 200,180 esta siempre va a estar en esa posicion osea no importa si se ajusta la resolucion o no
y como hay dispositivos con 1024x700 o 854x480 o otras resoluciones la posicion va a ser siempre 200,180 y obviamente en la resolucion 1024x700 esta posicion va a se mas arriba que lo 854x480!!!
yo he buscado, intentado, probado diversas formas para solucionar este problema pero no doy aun con la solucion!!!!
saludos y si alguien sabe la solucion por favor instruyanos
Yo no tengo el módulo android, así que no puedo hacer pruebas, pero ¿por qué no usar posiciones relativas en lugar de absolutas?
Suponiendo que la posición de uin boton sea (200, 180), y la resolución 1024X768 y que quieres mantener una posición proporcional en cualquier dispositivo.
200/1024 = 0.195, redondeado sería un 20%
180/768 = 0.234, redondeado sería 24%
Entonces, en lugar de especificar una posición fija para el botón (lo que que no permite adecuarla al dispositivo), se usaría algo así (no sé si sean las funciones correctas, pero la idea se entiende)
xx = display_get_width() * 0.20
yy = display_get_height()* 0.24
o
xx = 0.20 * display_get_gui_width();
yy = 0.24* display_get_gui_height();
Y estas serían las coordenadas que se usarían para posicionar el botón según la resolución que maneje el dispositivo. Repito, no puedo probar esto, pero creo que debería funcionar así, o con ligeras modificaciones.
gracias a penumbra he solucionado ese problema que tanto me ha dado por la cabeza!!!
el codigo lo hice asi
posx=x/display_get_gui_width();
posy=y/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
up=virtual_key_add(posx,posy,72,68,vk_up);
Y va de Maravilla
gracias penumbra!!
ocarina, dime si es posy y posx se le da alguna coordenan y se pone en event create?
Enseñame amigo como podria ajusta con tu codigo los botones?, la GUI se dibuja normalmente en DRAW GUI?
Gracias por tu ayuda!!
posx=50/display_get_gui_width();
posy=700/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
global.izq = virtual_key_add (posx,poxy,128,128, ord('A'));
//virtual_key_show (global.izq);
posx=350/display_get_gui_width();
posy=700/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
global.der = virtual_key_add (posx,poxy,128,128, ord('D'));
//virtual_key_show (global.der);
posx=200/display_get_gui_width();
posy=550/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
global.arri = virtual_key_add (posx,poxy,128,128, ord('W'));
//virtual_key_show (global.arri);
posx=200/display_get_gui_width();
posy=850/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
global.abaj = virtual_key_add (posx,poxy,128,128, ord('S'));
//virtual_key_show (global.abaj);
posx=1550/display_get_gui_width();
posy=700/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
global.sal = virtual_key_add (posx,poxy,128,128, ord('F'));
//virtual_key_show (global.sal);
posx=1400/display_get_gui_width();
posy=850/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
global.corr = virtual_key_add (posx,poxy,128,128, ord('E'));
//virtual_key_show (global.corr);
posx=1550/display_get_gui_width();
posy=50/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
global.menu = virtual_key_add (posx,poxy,128,128, ord('Q'));
//virtual_key_show (global.menu);
posx=50/display_get_gui_width();
posy=700/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
draw_sprite (spr_izq,0,posx,posy);
posx=350/display_get_gui_width();
posy=700/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
draw_sprite (spr_der,0,posx,poxy);
posx=200/display_get_gui_width();
posy=550/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
draw_sprite (spr_arri,0,posx,posy);
posx=200/display_get_gui_width();
posy=850/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
draw_sprite (spr_abaj,0,posx,posy);
posx=1550/display_get_gui_width();
posy=700/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
draw_sprite (spr_salto,0,posx,posy);
posx=1400/display_get_gui_width();
posy=850/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
draw_sprite (spr_salto,0,posx,posy);
posx=1550/display_get_gui_width();
posy=50/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
draw_sprite (spr_menu,0,posx,posy);
Amigo ocarina, yo agradezco tu paciencia y a las demas personas!!!
Te mande el example de mi juego, la verdad estoy apunto de rendirme. ahora le puse el codigo que me enviaste y me da ERROR de Linea y no encuentro el error. gracias por tu ayuda y la de todos!!!
//Codigo para ajustar VK en pantalla-------------
//-----------------------------------------------
posx=50/display_get_gui_width();
posy=700/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
global.izq = virtual_key_add (posx,posy,128,128, ord('A'));
virtual_key_show (global.izq);
posx=350/display_get_gui_width();
posy=700/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
global.der = virtual_key_add (posx,posy,128,128, ord('D'));
virtual_key_show (global.der);
posx=200/display_get_gui_width();
posy=550/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
global.arri = virtual_key_add (posx,posy,128,128, ord('W'));
virtual_key_show (global.arri);
posx=200/display_get_gui_width();
posy=850/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
global.abaj = virtual_key_add (posx,posy,128,128, ord('S'));
//virtual_key_show (global.abaj);
posx=1550/display_get_gui_width();
posy=700/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
global.sal = virtual_key_add (posx,posy,128,128, ord('F'));
//virtual_key_show (global.sal);
posx=1400/display_get_gui_width();
posy=850/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
global.corr = virtual_key_add (posx,posy,128,128, ord('E'));
//virtual_key_show (global.corr);
posx=1550/display_get_gui_width();
posy=50/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
global.menu = virtual_key_add (posx,posy,128,128, ord('Q'));
//virtual_key_show (global.menu);
//
//
//
//Fin del codigo en create y despues Draw_GUI---------------------------------
cambia el draw_gui por draw
//Inicio del codigo para ajustar VK en draw Gui conforme a create-----------------
//
//
posx=50/display_get_gui_width();
posy=700/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
draw_sprite (spr_izq,0,posx,posy);
posx=350/display_get_gui_width();
posy=700/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
draw_sprite (spr_der,0,posx,posy);
posx=200/display_get_gui_width();
posy=550/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
draw_sprite (spr_arri,0,posx,posy);
posx=200/display_get_gui_width();
posy=850/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
draw_sprite (spr_abaj,0,posx,posy);
posx=1550/display_get_gui_width();
posy=700/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
draw_sprite (spr_salto,0,posx,posy);
posx=1400/display_get_gui_width();
posy=850/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
draw_sprite (spr_salto,0,posx,posy);
posx=1550/display_get_gui_width();
posy=50/display_get_gui_height();
posx=posx*display_get_gui_width();
posy=posy*display_get_gui_height();
draw_sprite (spr_menu,0,posx,posy);
//
//
//
//Fin del codigo
y en la opcion depth pon -10
Amigo lo probe en un LG G2 con pantalla de 5.2" y me funciona bien y despues lo probe en un LG Optimus L5 con pantalla de 4" y aun no se ajusta los botones virtuales. esto es dificil para mi. seguire mirando que puedo hacer.
Si alguien tiene una solucion espero que me ayude!!
Gracias OCaRINA por tu gran ayuda.
Amigos encontre la solucion en los foros de yoyo games!!!!! :)
Y lo quiero compartir con ustedes, para aportar a la comunidad!!!
ESPERO QUE LO SUBAN A EXAMPLES!!! PARA LOS FUTUROS MAKEROS :)
lo que hay que poner al inicio es display_set_gui_size(854,480);//aqui van las medidas de tu room
lo pones antes de todo el codigo