Menu
CoddyTech

Pressionado neste quadro

Parte da seção Criando jogos de verdade do Journey de Unity da Coddy. Lição 45 de 56.

isPressed responde “está pressionado agora?” a cada frame em que o botão fica pressionado. Para algo que deve acontecer uma vez por pressionamento, um controle tem mais duas respostas: wasPressedThisFrame é true somente no frame em que a tecla ou o botão é pressionado, e wasReleasedThisFrame somente no frame em que é solto. Eles substituem Input.GetKeyDown e Input.GetKeyUp, além de GetMouseButtonDown e GetMouseButtonUp. Este carimbo desce quando o botão do mouse é pressionado e sobe quando é solto:

using UnityEngine;
using UnityEngine.InputSystem;

public class Stamp : MonoBehaviour
{
    public float drop = 0.5f;
    private int stamps;

    void Update()
    {
        Mouse mouse = Mouse.current;

        if (mouse.leftButton.wasPressedThisFrame)
        {
            transform.position += Vector3.down * drop;
            stamps++;
            Debug.Log("Stamp " + stamps);
        }
        if (mouse.leftButton.wasReleasedThisFrame)
        {
            transform.position += Vector3.up * drop;
        }
    }
}

Um clique mantido por meio segundo registra Stamp 1 uma vez, move o carimbo para baixo uma vez e o traz de volta para cima uma vez. Com isPressed no primeiro if, o mesmo clique registraria cerca de 30 carimbos e afundaria o carimbo 15 unidades na mesa. As teclas funcionam da mesma forma: Keyboard.current.spaceKey.wasPressedThisFrame é verdadeiro uma vez por pressionamento da barra de espaço.

challenge icon

Desafio

Médio

O velocista espera nos blocos de largada. Seu script tem speed (6) e crouch (0.3).

  • Quando a tecla Espaço é pressionada, o corredor se agacha nos blocos: ele se move crouch unidades para baixo, e Set é registrado.
  • Quando a tecla Espaço é solta em seguida, o corredor se levanta novamente (crouch unidades para cima), Go! é registrado e a corrida começa: a partir daí, ele corre ao longo de +z a speed unidades por segundo.
  • Manter a tecla Espaço pressionada registra Set uma vez, não uma vez por quadro. Depois que o corredor começa a correr, a tecla Espaço não faz mais nada.

Leia a tecla Espaço com Keyboard.current. Pressione Play, mantenha a tecla Espaço pressionada e solte-a, depois Check.

Experimente você mesmo

using UnityEngine;
using UnityEngine.InputSystem;

public class Sprinter : MonoBehaviour
{
    public float speed = 6f;
    public float crouch = 0.3f;

    void Update()
    {
        // Space pressionado: agache e registre Set. Space solto: levante, registre Go! e corra.
    }
}
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 Criando jogos de verdade