Menu
CoddyTech

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.

challenge icon

Desafío

Fácil

El 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.
    }
}
quiz iconPonte a prueba

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