102. CLASE INPUT (y IV)
GetKeyDown:
static function GetKeyDown (name : String) : boolean
Devuelve true durante el frame en que el usuario empieza a presionar la tecla identificada como name. Recordemos llamarla dentro de la función Updata, ya que resetea su estado cada frame. No devuelve true hasta que el usuario suelta y luego aprieta la tecla de nuevo (tal como hace por ejemplo GetButtonDown con respecto a GetButton).
static function GetKeyDown (key : KeyCode) : boolean
Devuelve true durante el frame en que el jugador empieza a presionar la tecla identificada por la key de tipo enumeración KeyCode, que vimos en el capítulo anterior.
GetKeyUp:
static function GetKeyUp (name : String) : boolean
static function GetKeyUp (key : KeyCode) : boolean
Devuelve true durante el frame en que el jugador libera la tecla identificada por name.
GetJoystickNames:
static function GetJoystickNames () : string[]
Devuelve un array de strings describiendo los joysticks conectados. Esto puede ser útil en una configuranción de entradas de pantalla de usuario. Así, en lugar de enseñar etiquetas como “joystick 1”, puedes mostrasr títulos más personalizados.
GetMouseButton:
static function GetMouseButton (button : int) : boolean
Devuelve true si el botón indicado del ratón es apretado. La variable button es un int que representa 0 para el botón izquierdo, 1 para el derecho y 2 para el central.
Por poner un ejemplo muy simple:
function Update() {
if(Input.GetMouseButton(0))
Debug.Log("presionado botón izquierdo.");
if(Input.GetMouseButton(1))
Debug.Log("presionado botón derecho.");
if(Input.GetMouseButton(2))
Debug.Log("presionado botón central.");
}
GetMouseButtonDown:
static function GetMouseButtonDown (button : int) : boolean
Devuelve true durante el frame en que el usuario aprieta el botón del ratón indicado. Debes llamar esta función dentro de update, ya que el estado se resetea cada frame. No devolverá true hasta que el botón sea liberado y vuelto a pulsar (recordemos de nuevo la diferencia de GetButtonDown con respecto a GetButton, para aplicarla también aquí).
GetMouseButtonUp:
static function GetMouseButtonUp (button : int) : boolean
Devuelve true durante el frame en que el usuario libera el botón del ratón indicado.
ResetInputAxes:
static function ResetInputAxes () : void
Resetea todos los inputs, con lo que todos los axes y botones retornan a 0. Esto puede ser util cuando se regenera al jugador y no te interesa conservar ningún imput que proceda de alguna tecla que pudiera continuar presionando.
GetAccelerationEvent:
static function GetAccelerationEvent (index : int) : AccelerationEvent
Devuelve mediciones de aceleración que ocurrieron durante el último frame.


101. CLASE INPUT (III)
GetKey:
static function GetKey (name : String) : boolean
Devuelve true mientras el jugador aprieta la tecla identificada como name (pensemos de nuevo en un disparador automático)
Para ver la lista de indentificadores de tecla podemos consultar Input Manager en el menú=>Edit=>Project Settings=>Input.
Un ejemplo sencillo:
function Update () {
if (Input.GetKey ("up"))
print ("Has presionado la flecha de desplazamiento superior");
if (Input.GetKey ("down"))
print ("Has presionado la flecha de desplazamiento inferior");
}
static function GetKey (key : KeyCode) : boolean
En este segundo prototipo la función devuelve true mientras el jugador presiona la tecla identificada por el parámetro de tipo KeyCode.
Así, el ejemplo anterior en esta segunda modalidad se quedaría así:
function Update () {
if (Input.GetKey (KeyCode.UpArrow))
print ("Has presionado la flecha de desplazamiento superior");
if (Input.GetKey (KeyCode.DownArrow))
print ("Has presionado la flecha de desplazamiento inferior");
}
Paso a relacionar todo el enum KeyCode:
None Not assigned (never is pressed)
Backspace The backspace key
Delete The forward delete key
Tab The tab key
Clear The Clear key
Return Return key
Pause Pause on PC machines
Escape Escape key
Space Space key
Keypad0 Numeric keypad 0
Keypad1 Numeric keypad 1
Keypad2 Numeric keypad 2
Keypad3 Numeric keypad 3
Keypad4 Numeric keypad 4
Keypad5 Numeric keypad 5
Keypad6 Numeric keypad 6
Keypad7 Numeric keypad 7
Keypad8 Numeric keypad 8
Keypad9 Numeric keypad 9
KeypadPeriod Numeric keypad '.'
KeypadDivide Numeric keypad '/'
KeypadMultiply Numeric keypad '*'
KeypadMinus Numeric keypad '-'
KeypadPlus Numeric keypad '+'
KeypadEnter Numeric keypad enter
KeypadEquals Numeric keypad '='
UpArrow Up arrow key
DownArrow Down arrow key
RightArrow Right arrow key
LeftArrow Left arrow key
Insert Insert key key
Home Home key
End End key
PageUp Page up
PageDown Page down
F1 F1 function key
F2 F2 function key
F3 F3 function key
F4 F4 function key
F5 F5 function key
F6 F6 function key
F7 F7 function key
F8 F8 function key
F9 F9 function key
F10 F10 function key
F11 F11 function key
F12 F12 function key
F13 F13 function key
F14 F14 function key
F15 F15 function key
Alpha0 The '0' key on the top of the alphanumeric keyboard.
Alpha1 The '1' key on the top of the alphanumeric keyboard.
Alpha2 The '2' key on the top of the alphanumeric keyboard.
Alpha3 The '3' key on the top of the alphanumeric keyboard.
Alpha4 The '4' key on the top of the alphanumeric keyboard.
Alpha5 The '5' key on the top of the alphanumeric keyboard.
Alpha6 The '6' key on the top of the alphanumeric keyboard.
Alpha7 The '7' key on the top of the alphanumeric keyboard.
Alpha8 The '8' key on the top of the alphanumeric keyboard.
Alpha9 The '9' key on the top of the alphanumeric keyboard.
Exclaim Exclaim key
DoubleQuote Double quote key
Hash Hash key
Dollar Dollar sign key
Ampersand Ampersand key
Quote Quote key
LeftParen Left Parent key
RightParen Right Parent key
Asterisk Asterisk key
Plus Plus key
Comma Comma ',' key
Minus Minus '-' key
Period Period '.' key
Slash Slash '/' key
Colon Colon ',' key
Semicolon Semicolon ';' key
Less Less '<' key
Equals Equals '=' key
Greater Greater '>' key
Question Question mark '?' key
At At key
LeftBracket Left bracket key
Backslash Backslash key
RightBracket Backslash key
Caret Caret key
Underscore Underscore '_' key
BackQuote Back quote key
A 'a' key
B 'b' key
C 'c' key
D 'd' key
E 'e' key
F 'f' key
G 'g' key
H 'h' key
I 'i' key
J 'j' key
K 'k' key
L 'l' key
M 'm' key
N 'n' key
O 'o' key
P 'p' key
Q 'q' key
R 'r' key
S 's' key
T 't' key
U 'u' key
V 'v' key
W 'w' key
X 'x' key
Y 'y' key
Z 'z' key
Numlock Numlock key
CapsLock Capslock key
ScrollLock Scroll lock key
RightShift Right shift key
LeftShift Left shift key
RightControl Right Control key
LeftControl Left Control key
RightAlt Right Alt key
LeftAlt Left Alt key
LeftApple Left Apple key
LeftWindows Left Windows key
RightApple Right Apple key
RightWindows Right Windows key
AltGr Alt Gr key
Help Help key
Print Print key
SysReq Sys Req key
Break Break key
Menu Menu key
Mouse0 First (primary) mouse button
Mouse1 Second (secondary) mouse button
Mouse2 Third mouse button
Mouse3 Fourth mouse button
Mouse4 Fifth mouse button
Mouse5 Sixth mouse button
Mouse6 Seventh mouse button
JoystickButton0 Button 0 on any joystick
JoystickButton1 Button 1 on any joystick
JoystickButton2 Button 2 on any joystick
JoystickButton3 Button 3 on any joystick
JoystickButton4 Button 4 on any joystick
JoystickButton5 Button 5 on any joystick
JoystickButton6 Button 6 on any joystick
JoystickButton7 Button 7 on any joystick
JoystickButton8 Button 8 on any joystick
JoystickButton9 Button 9 on any joystick
JoystickButton10 Button 10 on any joystick
JoystickButton11 Button 11 on any joystick
JoystickButton12 Button 12 on any joystick
JoystickButton13 Button 13 on any joystick
JoystickButton14 Button 14 on any joystick
JoystickButton15 Button 15 on any joystick
JoystickButton16 Button 16 on any joystick
JoystickButton17 Button 17 on any joystick
JoystickButton18 Button 18 on any joystick
JoystickButton19 Button 19 on any joystick
Joystick1Button0 Button 0 on first joystick
Joystick1Button1 Button 1 on first joystick
Joystick1Button2 Button 2 on first joystick
Joystick1Button3 Button 3 on first joystick
Joystick1Button4 Button 4 on first joystick
Joystick1Button5 Button 5 on first joystick
Joystick1Button6 Button 6 on first joystick
Joystick1Button7 Button 7 on first joystick
Joystick1Button8 Button 8 on first joystick
Joystick1Button9 Button 9 on first joystick
Joystick1Button10 Button 10 on first joystick
Joystick1Button11 Button 11 on first joystick
Joystick1Button12 Button 12 on first joystick
Joystick1Button13 Button 13 on first joystick
Joystick1Button14 Button 14 on first joystick
Joystick1Button15 Button 15 on first joystick
Joystick1Button16 Button 16 on first joystick
Joystick1Button17 Button 17 on first joystick
Joystick1Button18 Button 18 on first joystick
Joystick1Button19 Button 19 on first joystick
Joystick2Button0 Button 0 on second joystick
Joystick2Button1 Button 1 on second joystick
Joystick2Button2 Button 2 on second joystick
Joystick2Button3 Button 3 on second joystick
Joystick2Button4 Button 4 on second joystick
Joystick2Button5 Button 5 on second joystick
Joystick2Button6 Button 6 on second joystick
Joystick2Button7 Button 7 on second joystick
Joystick2Button8 Button 8 on second joystick
Joystick2Button9 Button 9 on second joystick
Joystick2Button10 Button 10 on second joystick
Joystick2Button11 Button 11 on second joystick
Joystick2Button12 Button 12 on second joystick
Joystick2Button13 Button 13 on second joystick
Joystick2Button14 Button 14 on second joystick
Joystick2Button15 Button 15 on second joystick
Joystick2Button16 Button 16 on second joystick
Joystick2Button17 Button 17 on second joystick
Joystick2Button18 Button 18 on second joystick
Joystick2Button19 Button 19 on second joystick
Joystick3Button0 Button 0 on third joystick
Joystick3Button1 Button 1 on third joystick
Joystick3Button2 Button 2 on third joystick
Joystick3Button3 Button 3 on third joystick
Joystick3Button4 Button 4 on third joystick
Joystick3Button5 Button 5 on third joystick
Joystick3Button6 Button 6 on third joystick
Joystick3Button7 Button 7 on third joystick
Joystick3Button8 Button 8 on third joystick
Joystick3Button9 Button 9 on third joystick
Joystick3Button10 Button 10 on third joystick
Joystick3Button11 Button 11 on third joystick
Joystick3Button12 Button 12 on third joystick
Joystick3Button13 Button 13 on third joystick
Joystick3Button14 Button 14 on third joystick
Joystick3Button15 Button 15 on third joystick
Joystick3Button16 Button 16 on third joystick
Joystick3Button17 Button 17 on third joystick
Joystick3Button18 Button 18 on third joystick
Joystick3Button19 Button 19 on third joystick


100. CLASE INPUT (II)
accelerationEvents:
static var accelerationEvents : AccelerationEvent[]
Variable de sólo lectura que devuelve una lista de mediciones de aceleración ocurridas durante el último frame. Dichas medidas son alojadas en variables temporales.
Dichas variables temporales son un array del tipo AccelerationEvent, que es una estructura con dos valores:
acceleration: De tipo Vector3, es el valor de aceleración.
deltaTime: De tipo float, el tiempo transcurrido desde la última medición de aceleración.
accelerationEventCount:
static var accelerationEventCount : int
Número de mediciones de aceleración ocurrida durante el último frame.
eatKeyPressOnTextFieldFocus:
static var eatKeyPressOnTextFieldFocus : boolean
Propiedad que indica si las teclas impresas son comidas por la entrada de texto si esta tiene el foco (por defecto true).
FUNCIONES DE CLASE:
GetAxis:
static function GetAxis (axisName : String) : float
Devuelve el valor del eje virtual identificado por axisName.
El valor estará en el rango -1...1 para entradas de teclado (tradicionalmente la flechas de desplazamiento) y joystick. Si el axis es indicado por el movimiento del ratón, éste será multiplicado por el eje de sensibilidad y su rango será distinto a -1…1.
Es una de las funciones con las que más tropezaremos cuando programemos con Unity, así que merece la pena que nos detengamos para ilustrarla con algún ejemplo.
El primer ejemplo lo hemos sacado del manual de referencia. Para que funciones bien (recordemos que tenemos en la actualidad MiPrimerScript vinculado a la esfera) es necesario que eliminemos el componente Rigidbody de la esfera. Y acto seguido editamos nuestro script como sigue:
var velocidad : float = 2.0;
var velocidadRotacion : float = 45.0;
function Update () {
var translacion : float = Input.GetAxis ("Vertical") * velocidad;
var rotacion : float = Input.GetAxis ("Horizontal") * velocidadRotacion;
translacion *= Time.deltaTime;
rotacion *= Time.deltaTime;
transform.Translate (0, 0, translacion);
transform.Rotate (0, rotacion, 0);
}
Tratemos de explicar lo que hemos hecho. A través de Input.GetAxis recogemos las entradas de teclado provinentes de las flechas de desplazamiento verticales y horizontales. Así, la flecha de desplazamiento hacia arriba vale 1 y la de desplazamiento hacia abajo vale -1, y lo mismo hacia la derecha (1) y la izquierda (-1). Dichos valores son multiplicados por la velocidad contenida en la variable "velocidad" en el caso del eje arriba/abajo, y por la contenida en la variable "velocidadRotacion" para el eje derecha/izquierda. Ambos valores son almacenados en variables de tipo Vector3 que luego -tras ser reconvertidos en velocidad por frame a velocidad por segundo- se utilizan para participar en el movimiento del game object tanto en el eje delante/detrás de translación como en el eje Y de rotación.
En suma, nos queda un script -muy básico y torpe, eso sí- para manejar el desplazamiento y giro de nuestra esfera en base a las flechas de desplazamiento. Probémoslo un rato.
Hemos dicho que Input.GetAxis también acepta como entrada el provocado por el movimiento vertical y horizontal del ratón, así que ilustrémoslo:
var velocidadHorizontal : float = 20.0;
var velocidadVertical : float = 20.0;
function Update () {
var h : float = velocidadHorizontal * Input.GetAxis ("Mouse X");
var v : float = velocidadVertical * Input.GetAxis ("Mouse Y");
transform.Rotate (v, h, 0);
}
Es un ejemplo sencillo. Se almacena en sendas variables el fruto de multiplicar el valor de los ejes de desplazamiento horizontal y vertical del ratón (que recordemos que no es -1,1) por el valor de velocidad que le hayamos dado a las variables expuestas del inicio de script. En base a ello, nuestra esfera girará sobre su eje X e Y en respuesta a los movimientos vertical y horizontal de nuestro ratón.
GetAxisRaw:
static function GetAxisRaw (axisName : String) : float
Devuelve el valor del eje virtual identificado por el parámetro axisName sin ningún filtro de suavizado aplicado. El valor estará en el rango de -1…1 para entrada de teclado y joystick. Como a la entrada -al contrario de la función anterior- no se le aplica smooth (suavizado),la entrada de teclado será siempre o -1 o cero o 1. Esta función puede sernos útil para el caso de que queramos hacer todo el proceso de suavizado de entrada nosotros mismos manualmente.
GetButton:
static function GetButton (buttonName : String) : boolean
Devuelve true mientras el botón virtual que le pasemos como parámetro en formato string esté presionado. Podemos pensar por ejemplo en un disparador automático, que devolvería true mientras el botón estuviera presionado.
Eso sí, así como esta función es óptima para acciones como disparar un arma, para cualquier tipo de movimiento es mejor usar GetAxis, que a éste le introduce valores de suavizado que en GetButton no hallaremos (ni podremos implementar manualmente, al contrario que en GetAxisRaw.
Un ejemplo:
var proyectil : GameObject;
var frecuenciaDisparo : float = 0.5;
private var proximoDisparo : float = 0.0;
function Update () {
if (Input.GetButton ("Fire1") && Time.time > proximoDisparo) {
proximoDisparo = Time.time + frecuenciaDisparo;
var clon : GameObject =
Instantiate(proyectil, transform.position+Vector3.forward, transform.rotation) as
GameObject;
}
}
Salvamos y arrastramos el cubo a la variable expuesta proyectil. Pulsamos play y observaremos que estamos clonando/disparando cubos cada vez que -dentro del lapso de tiempo permitido- pulsamos el botón izquierdo del ratón o la tecla Ctrl situada a la izquierda del teclado (que son por defecto los dos elementos que tenemos vinculados al evento Fire1. Por otro lado, si mantenemos pulsado de manera ininterrumpida bien el botón o bien la tecla indicados, observaremos que disparamos un cubo cada medio segundo.
En sí el script comprueba si hemos pulsado la tecla o botón que tengamos asignada a Fire1. En caso afirmativo pasa a comprobar si ha transcurrido un lapso de tiempo superior al que le hemos fijado en frecuenciaDisparo (que para el primer disparo valdrá cero). Si también es true esta segunda condición se le añade medio segundo de espera al resto de disparos más el tiempo transcurrido en hacerlo, el script nos permite clonar/disparar otro proyectil más.
GetButtonDown:
static function GetButtonDown (buttonName : String) : boolean
Devuelve true durante el frame en que el jugador aprieta el botón virtual identificado como buttonName. Debemos llamar siempre a esta función desde la función Update, dado que el estado se resetea cada frame. No devolverá true hasta que el usuario libere la tecla y la presione de nuevo, al igual que sucedía con anyKeyDown.
GetButtonUp:
static function GetButtonUp (buttonName : String) : boolean
Devuelve true el primer frame en que el jugador libera el botón virtual identificado como buttonName. Recordemos llamar esta función desde Update ya que se resetea su estado cada frame. No devolverá true hasta que se libere la tecla y se vuelva a presionar.


Con la tecnología de Blogger.
BUSCADOR
PÁSATE POR EL FORO
API DE UNITY
TEMAS
- 00_INTRODUCCION (3)
- 01_CLASE OBJECT (3)
- 02_ESTRUCTURA VECTOR3 (4)
- 03_CLASE TRANSFORM (7)
- 04_CLASE RIGIDBODY (8)
- 05_CLASE COLLIDER (2)
- 06_CLASE MESHCOLLIDER (1)
- 07_CLASE CHARACTERCONTROLLER (3)
- 08_CLASE RENDERER (2)
- 09_CLASE MESHFILTER (1)
- 10_CLASE JOINT (2)
- 11_CLASE HINGEJOINT (2)
- 12_CLASE SPRINGJOINT (1)
- 13_CLASE CHARACTERJOINT (1)
- 14_CLASE BEHAVIOUR (1)
- 15_CLASE MONOBEHAVIOUR (9)
- 16_CLASE CAMERA (6)
- 17_CLASE LIGHT (3)
- 18_CLASE MATERIAL (3)
- 19_CLASE CUBEMAP (1)
- 20_CLASE RENDERTEXTURE (3)
- 21_CLASE PARTICLEEMITTER (3)
- 22_CLASE MESH (2)
- 23_CLASE GAMEOBJECT (6)
- 24_CLASE SHADER (1)
- 25_CLASE PHYSICMATERIAL (1)
- 26_CLASE COMPONENT (1)
- 27_CLASE GUIELEMENT (1)
- 28_CLASE GUITEXT (2)
- 29_CLASE GUITEXTURE (1)
- 30_CLASE GUI (8)
- 31_CLASE GUILAYOUT (4)
- 32_CLASE TEXTURE (1)
- 33_CLASE TEXTURE2D (2)
- 34_CLASE INPUT (4)
- 35_ESTRUCTURA BOUNDS (1)
- 36_CLASE COLLISION (1)
- 37_CLASE CONTROLLERCOLLIDERHIT (1)
- 38_CLASE DEBUG (1)
- 39_CLASE EVENT (3)
- 40_CLASE GIZMOS (1)
- 41_CLASE LIGHTMAPSETTINGS (1)
- 42_ESTRUCTURA MATHF (3)
- 43_CLASE PHYSICS (2)
- 44_ESTRUCTURA QUATERNION (1)
- 45_CLASE RANDOM (1)
- 46_ESTRUCTURA RAY (1)
- 47_ESTRUCTURA RAYCASTHIT (1)
- 48_ESTRUCTURA RECT (1)
- 49_CLASE RENDERSETTINGS (1)
- 50_CLASE SCREEN (1)
- 51_CLASE TIME (1)
- 52. CLASE YIELDINSTRUCTION (1)
- MONOGRAFICOS (2)