Pulsado, mantenido y soltado
Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 12 de 67.
Unity puede indicarte tres cosas distintas sobre una tecla, y cada una se consulta en Update():
Input.GetKeyDown(KeyCode.Space): ¿se ha pulsado la barra espaciadora en este fotograma? Es true en un fotograma por pulsación.Input.GetKey(KeyCode.Space): ¿está pulsada la barra espaciadora ahora mismo? Es true en cada fotograma mientras se mantenga pulsada.Input.GetKeyUp(KeyCode.Space): ¿se ha soltado la barra espaciadora en este fotograma? Es true en un fotograma, cuando se suelta la tecla.
Mantén pulsada la barra espaciadora durante medio segundo a 60 fotogramas por segundo y GetKey será true en 30 fotogramas, GetKeyDown en el primero de ellos y GetKeyUp en el fotograma posterior al último. Un cañón que dispara una vez por pulsación consulta GetKeyDown; con GetKey, una pulsación dispararía 30 veces:
public int shots = 0;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
shots++;
Debug.Log("Shots fired: " + shots);
}
}GetKeyUp sirve para lo que sucede cuando el jugador suelta la tecla, como cuando termina un esprint. Los tres responden únicamente para el fotograma actual, por eso deben usarse en Update(): se ejecuta en cada fotograma, mientras que Start() se ejecuta una sola vez y no detectaría casi ninguna pulsación.
Desafío
FácilEl tirachinas se carga mientras mantienes presionada la barra espaciadora: charge aumenta en 1 por cada segundo que la mantienes presionada y no aumenta mientras no la mantienes presionada. Cuando sueltas la barra espaciadora, registra Charge: seguido de la carga (por ejemplo, Charge: 1.5) y luego vuelve a establecer charge en 0 para el siguiente disparo.
Presiona Play, mantén presionada la barra espaciadora y suéltala; observa la consola. Después, presiona Check.
Pruébalo tú mismo
using UnityEngine;
public class Slingshot : MonoBehaviour
{
float charge = 0f;
void Update()
{
// Mientras se mantiene pulsada Space: charge aumenta en 1 cada segundo.
// Cuando se suelta Space: registra charge y luego vuelve a establecerlo en 0.
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos de scripting en Unity
1Tu primer script
Hola, UnityColoca el cuboMuévete en cada fotogramaGira cada segundoDirige con las teclasRepaso: conduce el cubo4Vectores
Sumar vectoresDireccionesEspacio local y globalVelocidad diagonalDistancia entre objetosVector3 es una estructuraRepaso: piloto de dron7Proyecto: Atrapa la estrella
El atrapadorUna estrella fugaz10El ciclo de vida de los scripts
Awake y StartUpdate y LateUpdateOnEnable y OnDisableEl orden del ciclo de vidaRepaso: registrador del ciclo de vida2El Inspector
Campos del InspectorSerializeFieldNúmeros decimales y MathfAtributos del InspectorRepaso: Ascensor5Transformaciones y jerarquía
Padres e hijosEscalaMirar objetosMoverse hacia un puntoRepaso: Luna en órbita8Encontrar cosas
Buscar por nombreEtiquetasBuscar por tipoLas referencias superan a FindEl valor nulo de UnityRepaso: la moneda más cercana11Proyecto: Esquiva los bloques
El corredorBloques que caen6GameObjects y componentes
Referencias en el InspectorObtener un componenteComponentes faltantesAñadir un componenteRequireComponentMostrar y ocultarRepaso: interruptor de luz