Pressionado neste quadro
Parte da seção Criando Jogos de Verdade do Journey de Unity da Coddy. Lição 46 de 60.
isPressed responde “está pressionado agora?” em cada quadro enquanto a tecla ou o botão está pressionado. Para algo que deve acontecer uma vez por pressionamento, um controle tem mais duas respostas: wasPressedThisFrame é true apenas no quadro em que a tecla ou o botão foi pressionado, e wasReleasedThisFrame apenas no quadro em que foi solto. Elas substituem Input.GetKeyDown e Input.GetKeyUp, e também 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 depois 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 é true uma vez por pressionamento da barra de espaço.
Desafio
MédioInicie o velocista com a tecla Espaço: para baixo para agachar, para cima para correr.
- Em
Update(), quando!runningeKeyboard.current.spaceKey.wasPressedThisFrame: definaset, mova para baixocrouch, registreSet. - Quando
setewasReleasedThisFrame: limpeset, definarunning, mova para cimacrouch, registreGo!. - Enquanto
running, mova-se ao longo de +z aspeedunidades por segundo.
Pressione “Jogar”, mantenha Espaço pressionada e solte: Set, depois Go! no Console. Em seguida, clique em “Verificar”.
Experimente você mesmo
using UnityEngine;
using UnityEngine.InputSystem;
public class Sprinter : MonoBehaviour
{
public float speed = 6f;
public float crouch = 0.3f;
private bool set;
private bool running;
void Update()
{
// Ao pressionar Space: agache e registre Set. Ao soltar Space: levante, registre Go! e corra.
}
}
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ímetro2Botõ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: Corrida sem Fim
Três FaixasObstáculos à Frente9O Novo Sistema de Entrada
Dois sistemas de entradaTeclado e mousePressionado neste quadroAções de entradaRecapitulação: troca de entradaPratique por conta própria: Playground de Unity