Menu
CoddyTech

Pressionado, Mantido, Liberado

Parte da seção Noções básicas de scripting no Unity do Journey de Unity da Coddy. Lição 12 de 67.

O Unity pode informar três coisas diferentes sobre uma tecla, e cada uma é verificada em Update():

  • Input.GetKeyDown(KeyCode.Space): a tecla Space foi pressionada neste quadro? O resultado é true em um quadro por pressionamento.
  • Input.GetKey(KeyCode.Space): a tecla Space está pressionada agora? O resultado é true em todos os quadros enquanto Space estiver pressionada.
  • Input.GetKeyUp(KeyCode.Space): a tecla Space foi solta neste quadro? O resultado é true em um quadro, quando a tecla é solta.

Mantenha Space pressionada por meio segundo a 60 quadros por segundo, e GetKey será true em 30 quadros, GetKeyDown no primeiro deles e GetKeyUp no quadro após o último. Um canhão que dispara uma vez por pressionamento verifica GetKeyDown; com GetKey, um pressionamento dispararia 30 tiros:

public int shots = 0;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        shots++;
        Debug.Log("Shots fired: " + shots);
    }
}

GetKeyUp serve para o que acontece quando o jogador solta a tecla, como o fim de uma corrida. As três respondem apenas para o quadro atual, por isso devem ficar em Update(): ele é executado a cada quadro, enquanto Start() é executado uma vez e perderia quase todos os pressionamentos.

challenge icon

Desafio

Fácil

O estilingue carrega enquanto você mantém Espaço pressionado: charge aumenta em 1 a cada segundo em que Espaço fica pressionado e não aumenta enquanto não está. Quando você soltar Espaço, registre Charge: seguido da carga (por exemplo, Charge: 1.5) e, em seguida, defina charge novamente como 0 para o próximo disparo.

Pressione Jogar, mantenha Espaço pressionado e solte-o; observe o Console. Em seguida, pressione Verificar.

Experimente você mesmo

using UnityEngine;

public class Slingshot : MonoBehaviour
{
    float charge = 0f;

    void Update()
    {
        // Enquanto Space estiver pressionada: charge aumenta em 1 a cada segundo.
        // Quando Space for solta: registre charge no log e depois redefina seu valor para 0.
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Noções básicas de scripting no Unity