Hola makeros, tengo un problema inesperado, al configurar las virtual keys y probar el juego en windows funciona todo bien pero cuando compilo para android estan todas movidas, en principio pense que no estaban funcionando pero tocando por la pantalla me di cuenta de que sí estan pero no donde yo las he puesto, alguien sabe como evitar esto?
el problema radica en que seguro usaste valores fijos para ponerlos en el room
digamos que lo pusiste en x=400 y=900
pero tu celular es de 360×480
entonces aparecerán en el lugar que pusiste, y por ende, fuera de la pantalla, o desordenadas.
http://gmc.yoyogames.com/index.php?showtopic=565614
Hola gente, luego de probar y probar, ubicar las virtual keys en coordenadas relativas a un punto u objeto y no a la room, prueba tras prueba, estoy en condiciones de decir que el sistema de Virtual Keys de Game Maker NO SIRVE, si están pensando en implementarlo en algún proyecto ni siquiera lo intenten, algo que debería ser tan simple se va a convertir en una pesadilla, va a convertir su juego en todo un desastre, agotadas las instancias puedo dar dos soluciones, una es desistir y dejar de lado el multitouch y otra es usar otro software si tienen la posibilidad como ser Unity donde lograr esto es básico. También hay otra forma de hacerlo segun YOYO con un bucle for y las funciones device del mouse pero al primer intento no me funcionó, tal vez lo intente una vez más. Repito, NO SIRVE y nadie por más experto que sea en GMS me ha podido resolver este problema.
Yo siempre ando insistiendo en que cuando se plantea un problema, hay que colocar el código que no está funcionando (
sólo el que no funciona, no todo el código del objeto), y en tu caso, esto es muy ilustrativo de qué pasa si no se coloca código. En esencia sólo mencionas que tienes un problema y al final dices que no tiene solución, pero jamás nos diste indicio de qué código estás usando.
Sin ser usuario de Android ni usar GML para esos dispositivos, yo me arriesgaría a decir que el posicionamiento de teclas virtuales funciona perfectamente. Lo que me hace pensar que tu método está fallando es esto:
CitarThe actual position of the virtual key is based on the screen position rather than room position and so the x/y values are absolute on the screen. This means that you don't need to worry about the use of views or the relative room coordinates, and can simply draw your key sprites and define your virtual keys in the Draw GUI Event of an object.
Así que si las teclas se definen en el evento Draw GUI ni siquiera hay que definir coordenadas relativas, porque en GM: Studio las VK se mapean directo a la pantalla sin tomar en cuenta la habitación (esto último se menciona creo que en el tutorial de teclas virtuales de GM:S).
Otra cosa importante:
CitarThese keys are assigned on a per room basis and will be automatically removed by GameMaker: Studio when changing rooms.
Incluso usando posiciones relativas (
que no es necesario, según el manual) parece que a varios makeros les ha funcionado:
http://webcache.googleusercontent.com/search?q=cache:pqnEhX7kZz4J:www.comunidadgm.org/preguntas-y-respuestas/reajustar-la-gui-a-resoluciones-android(solucionado)/+&cd=1&hl=es-419&ct=clnk&gl=mx
Hola, antes que nada gracias por responder, sí tienes razón Penumbra pero es que no hay mucho para poner, el código es corto, una simple función
En evento Create del boton
virtual_key_add (x-96,y-224,300,400,vk_f1)
Es un boton/palanca que ya tego en un sprite y se mueve segun donde esté el dedo, yo no quiero dibujarlo con draw, necesito que sea un objeto, cuando pruebo en windows anda de mil maravillas pero en android se mueven todas las virtual keys.
Aun así, es mejor ver el código para estar seguro. Lo que no me queda claro es lo que quieres hacer:
Cita de: serviciosadistancia en Junio 23, 2015, 12:12:44 AM
Es un boton/palanca que ya tego en un sprite y se mueve segun donde esté el dedo
¿Es decir, quieres que ese control/botón se mueva a la posición del dedo? Si ese es el caso, pues el problema es que una tecla virtual no está pensada para funcionar así. Una tecla virtual, al menos en casos normales, siempre está fija. Quizás se pueda mover (no lo he probado), pero entonces esa función debería moverse a un evento que no sea CREATE
x-96,y-224 no va a funcionar en dispositivos móviles, porque ese 96 y ese 224 son valores ABSOLUTOS y no están considerando el tamaño de la pantalla del dispsitivo. Ese 224 en un dispositivo puede representar un punto cercano al borde superior de la pantalla, mientras que en otro dispositivo, puede quedar cercano al centro o más cerca al borde inferior.
En el enlace de mi mensaje anterior se explica cómo se debería posicionar la tecla virtual usando las variables de GML que devuelven las medidas del display.
Esto:
"Posiciona la tecla en X = 500" no es lo mismo que esto "Posiciona la tecla en X = la mitad del ancho del display actual". En esta diferencia radica la solución.
Lo que dice PENUMBRA es relativamente correcto ya que las teclas virtuales no se pueden mover como dicho objeto
Pero si tu lo que quieres es animar las teclas cuando tu presionas o dejas de presionar ellas se animan entonces pueden usar el Draw sprite ext hay te va ir indicando lo que tu quieres .
Saludes es un recordatorio que hago no estoy seguro del draw sprite ext.
Suerte
Es una palanca al estilo de las que trae un joystick de playstation, o sea, dentro de un circulo se mueve un boton que no sale de ese cìrculo
http://www.subirimagenes.net/i/150623022545394219.jpg
lo que necesito es poder manejar dos jugadores al mismo tiempo, cada uno con su palanca, con device_mouse trate de hacerlo pero tengo otro problema, es que los dos jugadores hacen lo mismo, ya se me agotaron las instancias.
https://marketplace.yoyogames.com/assets/612/touch-controls-engine. Esto es lo que tu ocupas ??
Exactamente eso es lo que uso para el juego. Por favor alguna ayuda o voy a tener que descartar el juego
Holaa yo tengo exactamente el mismo problema y luego de luchar bastante iba a preguntarlo aqui en el foro, por lo que veo no tiene solucion, mala nota para game maker en este aspecto ya que hoy en dia todos los telefonos del mundo son multitouch, no puede ser tan dificil de implementar, es una locura tener que calcular la posicion de una virtual key en base a la resolucion de cada telefono y blabla, si no lo hacemos con sprites, con objetos, por que no es igual con las virtual keys? en ultima instancia deberiamos poder darle la ubicacion o las coordenadas de un objeto para que se posicione, realmente un verdadero desastre, y device_mouse....... otro desastre, imposible, tocas un boton se aprieta el otro, se mezcla todo, no pude encontrar un solo ejemplo que funcione, tener algo tan simple como dos botones que hagan cosas diferentes al mismo tiempo en la misma room en Game Maker es una odisea, deberíamos hacer una queja a YOYO por lo que pagamos.
Las teclas virtuales son muy útiles y nada más de saberlas usar! También depende de la versión del gms q tengas ya que en las versiones anteriores eran muy difícil acomodar las teclas, y no es q sea imposible usarlas o como dice el compañero descartado!
Cuando llegue a casa podría subir un ejemplo sencillo de como usarlas en cualquier dispositivo!
Ocarina, yo dije descartado porque intente hacerlo de mil formas y no pude pero obviamente si me dices que se puede es porque era cuestion de conocimientos que me estan faltando y si puedes subir como dijiste un ejemplo seria de muchisima ayuda para mi y los otros compañeros que estan luchando con la misma cuestion.
A ver, pero el mensaje original habla de unas virtual keys que se mueven a lugares no esperados, pero resulta que al final lo que quieres hacer no tiene que ver con virtual keys. Una palanca analógica o joystick en pantalla no es ni funciona como una tecla virtual. Una tecla virtual es símplemente un área que se mapea a alguna tecla. Es obvio que un solo botón no puede emular el comportamiento de un control analógico que tiene múltiples direcciones. O quizás hay algo de lo que me he perdido y ya no entendí.
Cita de: mamaffia en Junio 23, 2015, 04:31:36 PM
es una locura tener que calcular la posicion de una virtual key en base a la resolucion de cada telefono y blabla, si no lo hacemos con sprites, con objetos, por que no es igual con las virtual keys?... no pude encontrar un solo ejemplo que funcione.
Personalmente opino muy distinto. Que no haya un ejemplo o que los que hayan no funcionen no significa que GM:S falle (obvio que puede fallar si se trata de un bug o de plano la característica está mal implementada, cosa que no creo que pase tratándose de VK's). Como dijo algún moderador o administrador aquí hace años (no recuerdo quien): "Si no existe un ejemplo, no te quejes por eso y mejor haz un ejemplo tu mismo". No quiero defender a ciegas a GM:S, hay cosas que en otros motores se hacen de manera más fácil, también le faltan características y en los últimos meses sólo se han dedicado a corregir bugs menores y no han agregado nuevas características de verdad útiles o poderosas, pero posicionar una tecla virtual no es nada complicado y hay muchos juegos hechos en GM:S que lo hacen.
Tampoco creo que realizar un par de multiplicaciones o divisiones en GML sea una locura Porque eso es lo único que hay que hacer para calcular la posición relativa de una tecla virtual, una para X y otra para Y, y no es que se tenga que hacer una vez para cada celular, el mismo código escrito una sola vez en un evento CREATE o similar serviría para cualquier dispositivo, y si al final haces con eso un script, el mismo script serviría para todos los proyectos en donde haya teclas virtuales.
No lo he probado, pero no creo que el manual se equivoque al decir que
ni siquiera es necesario usar coordenadas relativas cuando se usa el evento DRAW GUI para definir la tecla, ya que es un evento en donde las coordenadas tienen relación 1:1 con el display del dispositivo y no se toma en cuenta la dimensión de la habitación.
aqui esta el ejemplo
espero te sirva
esta creado en la versión 1.99.416 early access
saludos
Gracias a todos por las respuestas y en especial al compañero Ocarina que se tomó el trabajo de hacer un ejemplo que nos servirá a muchos, evidentemente estaba implementando o tratando de implementar el sistema de las V Keys con objetos y demás complicaciones que por lo que puedo ver no es la mejor forma, la forma ideal de hacerlo evidentemente es mediante Draw Gui, con todos los mensajes y sobre todo el ejemplo podemos dar el tema por solucionado. Muy bueno el ejemplo!