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.
Desafio
MédioO 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
crouchunidades para baixo, eSeté registrado. - Quando a tecla Espaço é solta em seguida, o corredor se levanta novamente (
crouchunidades para cima),Go!é registrado e a corrida começa: a partir daí, ele corre ao longo de +z aspeedunidades por segundo. - Manter a tecla Espaço pressionada registra
Setuma 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.
}
}
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
1Texto na tela
Canvas e textoExiba a pontuaçãoFormate númerosUm cronômetro regressivoRevisão: velocímetro4Cenas e Fases
Carregar uma CenaReiniciar a FasePróxima FaseManter entre CenasRevisão: Seleção de Fases10Projeto: Jogo de Plataforma 3D
O PercursoPlataformas Móveis2Botões e telas
Botões e onClickLambdasConectando no InspectorPainéis ligados e desligadosBarras de vidaRevisão: Loja de melhorias5Salvando com PlayerPrefs
Salvar um númeroCarregar com um valor padrãoRecordeSalvar configuraçõesRevisão: Moedas no banco3O Gerenciador do Jogo
Um Script Controla o JogoO SingletonEstados do JogoAlternando o EstadoRevisão: Gerenciador de Rodadas6Projeto: Corredor Infinito
Três FaixasObstáculos à Frente9O Novo Sistema de Entrada
Dois sistemas de entradaTeclado e mousePressionado neste quadroAções de entradaRecapitulação: troca de entrada