Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Siam en Diciembre 01, 2016, 02:29:08 PM

Título: Input Field teclado
Publicado por: Siam en Diciembre 01, 2016, 02:29:08 PM
Tengo unos campos input field para configurar las teclas de juego, pero quiesiera que esos campos mostraran la tecla que pulso no lo que escribo, es decir si pulso la tecla espacio me aparezca Space o un espacio en blanco. Alguien sabe como se puede hacer.
Título: Input Field teclado
Publicado por: lightbug en Diciembre 01, 2016, 09:44:42 PM
todo caracter que vos ingresas por teclado corresponde a un caracter ASCII, podes ingresar algo en el Input field, comparar el caracter que ingresaste, si es por ej Space corresponde al numero 32 (aca una de las tablas ascii http://ascii.cl/es/ (http://ascii.cl/es/) , proba poner alt+3+2 y se hace un espacio) imprimi "Space". Eso si se vuelve tedioso hacerlo para todos los caracteres.
 
No se si necesariamente necesitas un InputField, fijate que en los juegos simplemente te pide que apretes la tecla que quieras cuando estas por modificar un valor.
 
Lo mejor es detectar el KeyCOde que ingresas, en Unity ni idea como se hace, despues de una googleadita o dos seguro lo sacas. En SDL me acuerdo que lo sabia, ya me lo olvide jajaj.
 
Saludos 
 
 
Título: Input Field teclado
Publicado por: iRobb en Diciembre 02, 2016, 09:19:01 AM
Con el Input.GetKey:
 
https://docs.unity3d.com/ScriptReference/Input.GetKey.html (https://docs.unity3d.com/ScriptReference/Input.GetKey.html)
 
 
Título: Input Field teclado
Publicado por: Siam en Diciembre 02, 2016, 11:33:21 AM
Con Input.GetKey le tienes que decir que tecla se va a pulsar. Lo que yo queria es sin saber que tecla se va a pulsar te diga que tecla has pulsado y ya he encontrado como :)
 
Aquí edjo el enlace por si algiuen lo necesita
 
http://answers.unity3d.com/questions/629579/how-do-i-set-a-variable-to-the-key-im-pressing.html (http://answers.unity3d.com/questions/629579/how-do-i-set-a-variable-to-the-key-im-pressing.html)
Título: Input Field teclado
Publicado por: iRobb en Diciembre 02, 2016, 11:47:48 AM
Muy bien. Por supuesto.
Título: Input Field teclado
Publicado por: lightbug en Diciembre 02, 2016, 07:48:13 PM
Ah mira, gracias por el link, era algo asi en SDL, calculo que Unity utiliza alguna API parecida, sino la misma por es todo casi identica
 

lastKeyPressed = e.keyCode.ToString ();

 
 
Título: Input Field teclado
Publicado por: Siam en Diciembre 02, 2016, 11:27:24 PM
Lo unico malo es que no detecta todas las teclas, por ejemplo en un input.field si pulsas el espacio te pone space pero si pulsas el sift no pone nada aunque dentro de los keycode si existe el keycode.sift, luego hay teclas como la Ñ que en vez de ponerte Ñ pone 163 y cosas asi.
Título: Input Field teclado
Publicado por: lightbug en Diciembre 03, 2016, 12:36:06 AM
Probalo sin el Input.Field, simplemente que reconozca las teclas que presionas e imprima el nombre
Título: Input Field teclado
Publicado por: Siam en Diciembre 03, 2016, 02:31:56 PM
Pero para escribir el usuario la tecla que quiere usar necesita un input field, o hay otra manera?
Título: Input Field teclado
Publicado por: lightbug en Diciembre 03, 2016, 08:23:13 PM
No, el input field es para guardar una string que ingresa el usuario como datos (nombre, email, contraseña,etc) , si queres guardar una tecla, podes hacer aparecer un mensaje que diga "presione la tecla que quiere asignar" , el usuario lo hace y se guarda.
Título: Input Field teclado
Publicado por: Siam en Diciembre 05, 2016, 01:43:50 PM
Claro pero el problema es que al pulsar el shift en la variable que guarda la tecla que has pulsado (la muestres luego o no), no guarda nada, esta vacia.
Título: Input Field teclado
Publicado por: lightbug en Diciembre 05, 2016, 02:51:37 PM
Pfff es cierto, probé con todas las teclas y funciona perfecto (Hasta con Alt y AltGr), menos con shift jaaj
 
La unica solucion que encontre fue usar esto:
 

if (e.shift) {         
      GUILayout.Label ("leftShift!!");
}

 
e.shift es una bool que es true cuando shift esta presionado, con esto deberias reconocerlo ahora.
 
Saludos
Título: Input Field teclado
Publicado por: Siam en Diciembre 06, 2016, 04:17:07 PM
con e.shift en el update funciona, pero en OnGUI no. En update no me sirve tal como lo tengo.
 
Pincho en el input field para que el se escriba la letra y al cambiar el valor va a un metodo y alli cambio, pero desde el update no puedo acceder a ese inputField
 
Vale fallo mio xD estaba tratando a e.shift como un evento keydown y no lo es
Título: Input Field teclado
Publicado por: lightbug en Diciembre 06, 2016, 09:03:27 PM
El manejo de eventos esta pensado para funcionar en OnGUI , OnSceneGUI, etc... no en update, a mi me anda en onGUI, seguro tu Unity es chino jajaj
Título: Input Field teclado
Publicado por: Siam en Diciembre 06, 2016, 09:50:09 PM
Lo esaba haciendo mal estaba cogiendo el e.shift como un evento keydown