Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: juegovich en Julio 28, 2014, 05:17:49 AM

Título: botones interactivos en el hud
Publicado por: juegovich en Julio 28, 2014, 05:17:49 AM
Hola a todos, llevo unos meses trasteando con el game maker :GMS:, estoy haciendo un hud y necesito que los elementos estén en el view en una posición fija como todos los hud; cuando son simples sprites que muestren algo o texto con el evento draw gui no tengo ningún problema pero necesito colocar botones para abrir unos menús y estos no responden cuando estan dibujados en el draw gui pero funcionan perfectamente cuando se dibujan con el draw normal lo cual no me sirve porque al mover la camara se salen de la pantalla y es necesario que esten siempre en la pantalla. agradesco cualquier ayuda. :)
Título: Re:botones interactivos en el hud
Publicado por: 3dgeminis en Julio 28, 2014, 05:52:06 AM
Esto es lo que viene en el manual :
view_xview
view_yview

ejemplo
draw_text(view_xview[0] + 32, view_yview[0] + 32, "Score : " + string(score));
Título: Re:botones interactivos en el hud
Publicado por: eams1986 en Julio 28, 2014, 06:50:51 AM
crea un obj.control_pantalla
//create
gui_width=600  //es el ancho de tu room
gui_height=454 // es lo alto de tu room


///dependiento como tienes tu room asi le tendras que poner

//draw
/////////////////////////////////////////////////////////////////////////
display_set_gui_size(gui_width,gui_height)     //

ahora si prueba con el draw_gui a ver que pasa ..
colocas esto en la room ..


Suerte

Título: Re:botones interactivos en el hud
Publicado por: juegovich en Julio 28, 2014, 07:38:20 AM
muchas gracias a todos, el asunto es que no hay ningun problema con dibujar las cosas en el view, el asunto esta en que quiero que al hacer click en el sprite pase algo, lo logro cuando el objeto se dibuja normalmente, pero cuando esta dibujado en el evento draw gui o con los codigos view_xview etc. no funciona igual.
Título: Re:botones interactivos en el hud
Publicado por: eams1986 en Julio 28, 2014, 08:34:31 AM
haaa entonces creas las virtual keys amigo..


ejemplo
global.Left = virtual_key_add(32, 32, 64, 64, vk_left);
global.right = virtual_key_add(32, 32, 64, 64, vk_right);

asi mas o menos aprieta f1 para mas information en game maker
y escribe virtual_keys

Saludos
Título: Re:botones interactivos en el hud
Publicado por: juegovich en Julio 28, 2014, 07:16:06 PM
muchas gracias eams1986! lo voy a probar y les digo :)
Título: Re:botones interactivos en el hud
Publicado por: juegovich en Agosto 01, 2014, 01:59:51 AM
Cita de: eams1986 en Julio 28, 2014, 08:34:31 AM
haaa entonces creas las virtual keys amigo..


ejemplo
global.Left = virtual_key_add(32, 32, 64, 64, vk_left);
global.right = virtual_key_add(32, 32, 64, 64, vk_right);

asi mas o menos aprieta f1 para mas information en game maker
y escribe virtual_keys

Saludos

estuve leyendo y probando, resulta que el virtual key es para dispositivos tactiles, si existe alguna manera de usarlo con el mouse, la desconosco, estoy haciendo un juego para pc y no me resulta muy util, resolvi mi problema, colocando en el evento create del objeto el codigo
x=view_xview+100;
y=view_yview+100;


de manera que aunque mueva la camara del room(tengo un room mas grande que la pantalla(y lo quiero asi) y tengo una vista que siga al obj_cursor (el mouse), el objeto va a estar siempre en esa posicion y va a ser clickeable, cosa importante para una gui ya que lo que me pasaba antes era que se dibujaba el sprite en esa posicion del view pero el objeto estaba en una cordenada diferente(ya que este tiene una cordenada absoluta y el drawgui es relativa) quedando fuera del view.

por ahi todo perfecto, asunto solucionado, pero ahora tengo otro problema y es que cuando pongo el cursor en uno de los extremos de la pantalla para desplazarme por el room, el objeto hace un ligero movimiento hacia atras mientras esta el view en movimiento y quito el cursor del extremo para dejar la view en esa posicion, el objeto hace el movimiento contrario para quedarse en su puesto, son unos pocos pixeles y no afectan en nada, pero se ve terrible, quiero que el objeto se quede estatico en su posicion sin ningun tipo de movimiento mientras muevo el view.

disculpen por escribir tanto jaja :) gracias!
Título: Re:botones interactivos en el hud
Publicado por: 3dgeminis en Agosto 01, 2014, 08:42:52 AM
Supongo que el codigo lo tendras en Step y no en Create. Colocalo en el evento End Step
Título: Re:botones interactivos en el hud
Publicado por: juegovich en Agosto 02, 2014, 11:55:37 PM
lo he conseguido!

Cita de: 3dgeminis en Agosto 01, 2014, 08:42:52 AM
Supongo que el codigo lo tendras en Step y no en Create. Colocalo en el evento End Step

eso no funciono, he investigado mucho y he recibido mucha ayuda, les agradesco a todos.
para los que necesiten la solución ahí va.

para que un objeto se quede en una posición fija del view al mover la cámara sin movimientos raros ni nada, yo propongo lo siguiente:

en el evento Create:
x1=x;//la posición x del objeto que se necesite(declaramos esta variable para cerciorarnos de que las posiciones que usemos en todos los códigos sean la misma)
y1=y;


en el evento Step:
x=view_xview+x1;
y=view_yview+y1;


en el evento Draw Gui:
draw_sprite(spr_que_necesiten,image_index,x1,y1);

ahora lo mas importante es que no le coloquen un sprite asociado al objeto y determinan el Mask con el sprite que esáan usando, en este caso spr__que_necesiten.

de esta manera el objeto al reubicarce en la pantalla se sigue sacudiendo pero no lo vemos, solo vemos el sprite fijo que se esta dibujando y se podrá hacer click en el objeto aunque no se vea.
Título: Re:botones interactivos en el hud
Publicado por: gonzalortego en Octubre 25, 2014, 10:17:37 PM
Buenisimo el tema!!! Y yo peliando con virtuals keys xD

GRACIAS! :D
Título: Re:botones interactivos en el hud
Publicado por: yokaiworld en Octubre 26, 2014, 07:10:58 PM
en create:
gui_width=850
gui_height=480

en draw gui:
global.vkup = YoYo_AddVirtualKey( gui_width+12, gui_height-402, 100, 100, (ord('A')));

+12 es la posicion en x
-402 es la posicion en y
100 y 100 es el tamaño en x,y
(ord('A')) es el boton en este caso A

draw_sprite(spr_alfa,-1,gui_width+12, gui_height-402);

sprite alfa es un sprite que mide 100x100 (debes usra un sprite que tengas en tu juego y que sea de esta medida)